Assembly Diffs
linux arm64
Diffs are based on 95,287 contexts (40,999 MinOpts, 54,288 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 54,574 (35.48%)
Overall (+12,884 bytes)
| Collection | 
Base size (bytes) | 
Diff size (bytes) | 
| benchmarks.run.linux.arm64.checked.mch | 
1,346,400 | 
+832 | 
| benchmarks.run_pgo.linux.arm64.checked.mch | 
3,029,072 | 
-380 | 
| benchmarks.run_tiered.linux.arm64.checked.mch | 
2,686,108 | 
+16 | 
| coreclr_tests.run.linux.arm64.checked.mch | 
265,276 | 
-32 | 
| libraries.pmi.linux.arm64.checked.mch | 
1,426,088 | 
+4,784 | 
| libraries_tests.run.linux.arm64.Release.mch | 
2,011,980 | 
+184 | 
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 
1,298,624 | 
+3,160 | 
| realworld.run.linux.arm64.checked.mch | 
1,975,784 | 
+4,320 | 
  
MinOpts (-512 bytes)
| Collection | 
Base size (bytes) | 
Diff size (bytes) | 
| benchmarks.run_pgo.linux.arm64.checked.mch | 
2,177,252 | 
-220 | 
| benchmarks.run_tiered.linux.arm64.checked.mch | 
2,399,152 | 
-236 | 
| libraries_tests.run.linux.arm64.Release.mch | 
1,918,600 | 
-56 | 
  
FullOpts (+13,396 bytes)
| Collection | 
Base size (bytes) | 
Diff size (bytes) | 
| benchmarks.run.linux.arm64.checked.mch | 
1,290,156 | 
+832 | 
| benchmarks.run_pgo.linux.arm64.checked.mch | 
851,820 | 
-160 | 
| benchmarks.run_tiered.linux.arm64.checked.mch | 
286,956 | 
+252 | 
| coreclr_tests.run.linux.arm64.checked.mch | 
265,276 | 
-32 | 
| libraries.pmi.linux.arm64.checked.mch | 
1,426,088 | 
+4,784 | 
| libraries_tests.run.linux.arm64.Release.mch | 
93,380 | 
+240 | 
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 
1,298,624 | 
+3,160 | 
| realworld.run.linux.arm64.checked.mch | 
1,961,272 | 
+4,320 | 
  
Example diffs
benchmarks.run.linux.arm64.checked.mch
-28 (-10.61%) : 1381.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
@@ -10,120 +10,103 @@
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V01 tmp1         [V01,T00] (  8, 16   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V02 tmp2         [V02,T01] (  8, 16   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V03 tmp3         [V03,T02] (  8, 16   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V04 cse0         [V04,T03] (  4,  4   )    long  ->  x19         "CSE - aggressive"
-;  V05 cse1         [V05,T04] (  4,  4   )    long  ->  x21         "CSE - aggressive"
+;  V02 tmp2         [V02,T01] (  6, 12   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
+;  V03 tmp3         [V03,T02] (  6, 12   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
+;  V04 cse0         [V04,T03] (  4,  4   )     ref  ->  x19         "CSE - aggressive"
+;  V05 cse1         [V05,T04] (  4,  4   )   byref  ->  x21         "CSE - aggressive"
+;  V06 cse2         [V06,T05] (  4,  4   )   byref  ->  x22         "CSE - aggressive"
+;  V07 cse3         [V07,T06] (  4,  4   )    long  ->  x23         "CSE - aggressive"
 ;
 ; Lcl frame size = 8
 
 G_M2338_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
+            stp     fp, lr, [sp, #-0x40]!
             stp     x19, x20, [sp, #0x18]
-            str     x21, [sp, #0x28]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-                       ;; size=16 bbWeight=1 PerfScore 3.50
+                      ;; size=20 bbWeight=1 PerfScore 4.50
 G_M2338_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            movz    x19, #0xD1FFAB1E
-            movk    x19, #0xD1FFAB1E LSL #16
-            movk    x19, #0xD1FFAB1E LSL #32
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
-            ; gcrRegs +[x0]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            str     xzr, [x20, #0x10]
-            add     x0, x20, #24
-            ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
-            strb    wzr, [x20, #0x1C]
-            mov     x0, x20
-            ; gcrRegs +[x0]
-            ; byrRegs -[x0]
-            bl      <unknown method>
-            ; gcrRegs -[x0]
-            add     x14, x20, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     xzr, [x20, #0x10]
-            movz    x21, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
-            movk    x21, #0xD1FFAB1E LSL #16
-            movk    x21, #0xD1FFAB1E LSL #32
-            mov     x14, x21
-            ; byrRegs -[x14]
-            mov     x15, x20
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x20]
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
-            ; gcrRegs +[x0]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            str     xzr, [x20, #0x10]
-            add     x0, x20, #24
-            ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
-            strb    wzr, [x20, #0x1C]
-            mov     x0, x20
-            ; gcrRegs +[x0]
-            ; byrRegs -[x0]
-            bl      <unknown method>
-            ; gcrRegs -[x0]
-            add     x14, x20, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     x15, [x20, #0x10]
-            add     x14, x21, #8
-            ; byrRegs -[x14]
-            mov     x15, x20
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x20]
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_DBLROUND
             ; gcrRegs +[x0]
             mov     x19, x0
             ; gcrRegs +[x19]
-            str     xzr, [x19, #0x10]
-            add     x0, x19, #24
+            mov     x20, x19
+            ; gcrRegs +[x20]
+            str     xzr, [x20, #0x10]
+            add     x21, x20, #24
+            ; byrRegs +[x21]
+            mov     w0, #4
             ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
+            stlr    w0, [x21]
+            strb    wzr, [x20, #0x1C]
+            mov     x0, x20
+            ; gcrRegs +[x0]
+            bl      <unknown method>
+            ; gcrRegs -[x0]
+            add     x22, x20, #29
+            ; byrRegs +[x22]
+            mov     w14, #1
+            stlrb   w14, [x22]
+            str     xzr, [x20, #0x10]
+            movz    x23, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            movk    x23, #0xD1FFAB1E LSL #16
+            movk    x23, #0xD1FFAB1E LSL #32
+            mov     x14, x23
+            mov     x15, x20
+            ; gcrRegs +[x15]
+            bl      CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[x15 x20]
+            mov     x20, x19
+            ; gcrRegs +[x20]
+            str     xzr, [x20, #0x10]
+            mov     w0, #4
+            stlr    w0, [x21]
+            strb    wzr, [x20, #0x1C]
+            mov     x0, x20
+            ; gcrRegs +[x0]
+            bl      <unknown method>
+            ; gcrRegs -[x0]
+            mov     w14, #1
+            stlrb   w14, [x22]
+            str     x14, [x20, #0x10]
+            add     x14, x23, #8
+            mov     x15, x20
+            ; gcrRegs +[x15]
+            bl      CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[x15 x20]
+            str     xzr, [x19, #0x10]
+            mov     w0, #4
+            stlr    w0, [x21]
             strb    wzr, [x19, #0x1C]
             mov     x0, x19
             ; gcrRegs +[x0]
-            ; byrRegs -[x0]
             bl      <unknown method>
             ; gcrRegs -[x0]
-            add     x14, x19, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
+            ; byrRegs -[x21]
+            mov     w14, #1
+            stlrb   w14, [x22]
             mov     x14, #2
-            ; byrRegs -[x14]
             str     x14, [x19, #0x10]
-            add     x14, x21, #16
+            add     x14, x23, #16
             mov     x15, x19
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x15 x19]
-                     ;; size=232 bbWeight=1 PerfScore 41.00
+            ; byrRegs -[x22]
+                       ;; size=196 bbWeight=1 PerfScore 35.50
 G_M2338_IG03:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=20 bbWeight=1 PerfScore 6.00
 
-; Total bytes of code 264, prolog size 16, PerfScore 49.50, instruction count 66, allocated bytes for code 264 (MethodHash=536af6dd) for method Interop+Sys+FileDescriptors:.cctor() (FullOpts)
+; Total bytes of code 236, prolog size 20, PerfScore 46.00, instruction count 59, allocated bytes for code 236 (MethodHash=536af6dd) for method Interop+Sys+FileDescriptors:.cctor() (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +117,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 66 (0x00042) Actual length = 264 (0x000108)
+  Function Length   : 59 (0x0003b) Actual length = 236 (0x0000ec)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,9 +125,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
+    E6          save_next
     C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
-    E4          end
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
 
  
-48 (-10.53%) : 5780.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute
@@ -8,22 +8,18 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Type>
-;  V01 loc0         [V01,T04] (  5,  4   )     ref  ->  x20         class-hnd single-def <System.Collections.Hashtable>
-;  V02 loc1         [V02,T02] (  7,  5   )     ref  ->  x22         class-hnd <System.Attribute[]>
-;  V03 loc2         [V03,T12] (  4,  1   )     ref  ->  [fp+0x18]  class-hnd exact EH-live spill-single-def <System.Object>
+;  V00 arg0         [V00,T00] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Type>
+;  V01 loc0         [V01,T02] (  5,  4   )     ref  ->  x20         class-hnd single-def <System.Collections.Hashtable>
+;  V02 loc1         [V02,T01] (  7,  5   )     ref  ->  x22         class-hnd <System.Attribute[]>
+;  V03 loc2         [V03,T08] (  4,  1   )     ref  ->  [fp+0x18]  class-hnd exact EH-live spill-single-def <System.Object>
 ;  V04 loc3         [V04    ] (  6,  2.50)   ubyte  ->  [fp+0x20]  do-not-enreg[X] addr-exposed ld-addr-op
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T03] (  3,  4.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T10] (  3,  1.25)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T00] (  5,  6.75)     ref  ->  x22         class-hnd "spilling QMark2" <System.Attribute[]>
-;  V09 tmp4         [V09,T07] (  3,  2.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V10 tmp5         [V10,T11] (  3,  1.25)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V11 tmp6         [V11,T05] (  5,  3.75)     ref  ->  x22         class-hnd "spilling QMark2" <System.Attribute[]>
-;  V12 tmp7         [V12,T08] (  2,  2   )   ubyte  ->   x0         "Inlining Arg"
-;  V13 PSPSym       [V13,T13] (  1,  1   )    long  ->  [fp+0x28]  do-not-enreg[V] "PSPSym"
-;  V14 cse0         [V14,T06] (  4,  3   )    long  ->  x21         "CSE - aggressive"
-;  V15 cse1         [V15,T09] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V06 tmp1         [V06,T06] (  2,  2   )   ubyte  ->   x0         "Inlining Arg"
+;  V07 tmp2         [V07,T03] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
+;  V08 tmp3         [V08,T05] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V09 PSPSym       [V09,T09] (  1,  1   )    long  ->  [fp+0x28]  do-not-enreg[V] "PSPSym"
+;  V10 cse0         [V10,T04] (  4,  3   )    long  ->  x21         "CSE - aggressive"
+;  V11 cse1         [V11,T07] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
 ;
 ; Lcl frame size = 32
 
@@ -33,7 +29,7 @@ G_M8794_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x21, x22, [sp, #0x40]
             mov     fp, sp
             add     x1, sp, #80
-            str     x1, [fp, #0x28]   // [V13 PSPSym]
+            str     x1, [fp, #0x28]    // [V09 PSPSym]
             mov     x19, x0
             ; gcrRegs +[x19]
                        ;; size=28 bbWeight=1 PerfScore 5.50
@@ -57,44 +53,29 @@ G_M8794_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x22, x1
-            ; gcrRegs +[x22]
-            cbz     x22, G_M8794_IG05
-                       ;; size=56 bbWeight=1 PerfScore 18.50
-G_M8794_IG03:        ; bbWeight=0.25, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            ldr     x0, [x22]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x0, x2
-            beq     G_M8794_IG05
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M8794_IG04:        ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x22]
-            mov     x0, x2
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             mov     x22, x0
             ; gcrRegs +[x22]
-                     ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M8794_IG05:        ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbz     x22, G_M8794_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M8794_IG06:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x19-x20]
+            cbz     x22, G_M8794_IG05
+                       ;; size=72 bbWeight=1 PerfScore 21.00
+G_M8794_IG03:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x19-x20]
             mov     x0, x22
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8794_IG07:        ; bbWeight=1, epilog, nogc, extend
+G_M8794_IG04:        ; bbWeight=1, epilog, nogc, extend
             ldp     x21, x22, [sp, #0x40]
             ldp     x19, x20, [sp, #0x30]
             ldp     fp, lr, [sp], #0x50
             ret     lr
                        ;; size=16 bbWeight=1 PerfScore 4.00
-G_M8794_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M8794_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0 x22] +[x19-x20]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -105,11 +86,11 @@ G_M8794_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=1800
             ; GC ptr vars +{V03}
             str     wzr, [fp, #0x20]   // [V04 loc3]
                        ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M8794_IG09:        ; bbWeight=0.50, gcVars=0000000000001000 {V03}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8794_IG06:        ; bbWeight=0.50, gcVars=0000000000000100 {V03}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
             ldrb    w1, [fp, #0x20]    // [V04 loc3]
-            cbz     w1, G_M8794_IG11
+            cbz     w1, G_M8794_IG08
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M8794_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8794_IG07:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x19-x20]
             movz    x1, #0xD1FFAB1E      // code for System.Threading.Monitor:ThrowLockTakenException()
             movk    x1, #0xD1FFAB1E LSL #16
@@ -119,14 +100,14 @@ G_M8794_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcr arg pop 0
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M8794_IG11:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M8794_IG08:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0 x19-x20]
             add     x1, fp, #32    // [V04 loc3]
             bl      <unknown method>
             ; gcrRegs -[x0]
             ; gcr arg pop 0
             ldrb    w0, [fp, #0x20]    // [V04 loc3]
-            cbnz    w0, G_M8794_IG12
+            cbnz    w0, G_M8794_IG09
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -140,7 +121,7 @@ G_M8794_IG11:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=52 bbWeight=0.50 PerfScore 6.00
-G_M8794_IG12:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M8794_IG09:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     x0, x20
             ; gcrRegs +[x0]
             mov     x1, x19
@@ -151,33 +132,17 @@ G_M8794_IG12:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x22, x1
-            ; gcrRegs +[x22]
-            cbz     x22, G_M8794_IG15
-                       ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M8794_IG13:        ; bbWeight=0.25, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            ldr     x0, [x22]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x0, x2
-            beq     G_M8794_IG15
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M8794_IG14:        ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x22]
-            mov     x0, x2
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             mov     x22, x0
             ; gcrRegs +[x22]
-                     ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M8794_IG15:        ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbnz    x22, G_M8794_IG16
+            cbnz    x22, G_M8794_IG10
             mov     x0, x19
-            ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -200,45 +165,45 @@ G_M8794_IG15:        ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=
             blr     x3
             ; gcrRegs -[x0-x2 x19-x20]
             ; gcr arg pop 0
-                      ;; size=68 bbWeight=0.50 PerfScore 7.50
-G_M8794_IG16:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+                      ;; size=108 bbWeight=0.50 PerfScore 11.75
+G_M8794_IG10:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ldrb    w0, [fp, #0x20] // [V04 loc3]
-            cbz     w0, G_M8794_IG06
+            cbz     w0, G_M8794_IG03
             ldr     x0, [fp, #0x18]    // [V03 loc2]
             ; gcrRegs +[x0]
             ; GC ptr vars -{V03}
             bl      <unknown method>
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            b       G_M8794_IG06
+            b       G_M8794_IG03
                         ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M8794_IG17:        ; bbWeight=0, gcVars=0000000000001000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M8794_IG11:        ; bbWeight=0, gcVars=0000000000000100 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
             ; gcrRegs -[x22]
-            ; GC ptr vars +{V03 V12}
+            ; GC ptr vars +{V03 V08}
             stp     fp, lr, [sp, #-0x40]!
             stp     x19, x20, [sp, #0x20]
             stp     x21, x22, [sp, #0x30]
             add     x3, fp, #80
             str     x3, [sp, #0x18]
                        ;; size=20 bbWeight=0 PerfScore 0.00
-G_M8794_IG18:        ; bbWeight=0, gcVars=0000000000001000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8794_IG12:        ; bbWeight=0, gcVars=0000000000000100 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
             ldrb    w0, [fp, #0x20] // [V04 loc3]
-            cbz     w0, G_M8794_IG19
+            cbz     w0, G_M8794_IG13
             ldr     x0, [fp, #0x18]    // [V03 loc2]
             ; gcrRegs +[x0]
-            ; GC ptr vars -{V03 V12}
+            ; GC ptr vars -{V03 V08}
             bl      <unknown method>
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M8794_IG19:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M8794_IG13:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
             ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 456, prolog size 28, PerfScore 58.25, instruction count 114, allocated bytes for code 456 (MethodHash=544edda5) for method System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
+; Total bytes of code 408, prolog size 28, PerfScore 57.00, instruction count 102, allocated bytes for code 408 (MethodHash=544edda5) for method System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -249,7 +214,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 101 (0x00065) Actual length = 404 (0x000194)
+  Function Length   : 89 (0x00059) Actual length = 356 (0x000164)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -286,4 +251,4 @@ Unwind Info:
 
 *************** EH table for System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[]
 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M8794_IG09..G_M8794_IG16) handled by [G_M8794_IG17..END) (fault)
+EH#0: try [G_M8794_IG06..G_M8794_IG10) handled by [G_M8794_IG11..END) (fault)
  
-24 (-5.71%) : 9401.dasm - BenchmarkDotNet.Engines.ConsumerExtensions:Consume[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],BenchmarkDotNet.Engines.Consumer) (FullOpts)
@@ -7,47 +7,43 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T03] (  9,  6.92)    long  ->  x19         single-def
-;  V01 arg0         [V01,T10] (  3,  3   )     ref  ->  x21         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V02 arg1         [V02,T04] (  3,  6   )     ref  ->  x20         class-hnd single-def <BenchmarkDotNet.Engines.Consumer>
-;  V03 loc0         [V03,T02] (  7, 10   )     ref  ->  [fp+0x18]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V00 TypeCtx      [V00,T05] (  9, 15.08)    long  ->  x19         single-def
+;  V01 arg0         [V01,T13] (  3,  3   )     ref  ->  x21         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V02 arg1         [V02,T09] (  3,  6   )     ref  ->  x20         class-hnd single-def <BenchmarkDotNet.Engines.Consumer>
+;  V03 loc0         [V03,T08] (  7, 10   )     ref  ->  [fp+0x18]  class-hnd EH-live spill-single-def <<unknown class>>
 ;  V04 loc1         [V04    ] (  2,  8   )     ref  ->  [fp+0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V07 tmp2         [V07,T06] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V07 tmp2         [V07,T11] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 tmp4         [V09,T00] (  3, 24   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V09 tmp4         [V09,T00] (  4, 24   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V10 tmp5         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V11 tmp6         [V11,T01] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V12 PSPSym       [V12,T17] (  1,  1   )    long  ->  [fp+0x30]  do-not-enreg[V] "PSPSym"
-;  V13 cse0         [V13,T11] (  2,  5   )    long  ->  x22         hoist "CSE - aggressive"
-;  V14 cse1         [V14,T12] (  2,  5   )    long  ->  x23         hoist "CSE - aggressive"
-;  V15 cse2         [V15,T05] (  6,  7   )    long  ->  x21         multi-def "CSE - aggressive"
-;  V16 rat0         [V16,T07] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V17 rat1         [V17,T15] (  3,  4   )    long  ->  x22         "runtime lookup"
-;  V18 rat2         [V18,T08] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V19 rat3         [V19,T13] (  3,  4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;  V20 rat4         [V20,T16] (  3,  4   )    long  ->  x23         "runtime lookup"
-;  V21 rat5         [V21,T09] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V22 rat6         [V22,T14] (  3,  4.48)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V11 tmp6         [V11,T07] (  2, 16   )    long  ->   x1         "argument with side effect"
+;  V12 PSPSym       [V12,T14] (  1,  1   )    long  ->  [fp+0x30]  do-not-enreg[V] "PSPSym"
+;  V13 cse0         [V13,T10] (  6,  7   )    long  ->  x21         multi-def "CSE - aggressive"
+;  V14 rat0         [V14,T12] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V15 rat1         [V15,T01] (  3, 22.40)    long  ->   x0         "spilling expr"
+;  V16 rat2         [V16,T03] (  3, 17.92)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V17 rat3         [V17,T06] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V18 rat4         [V18,T02] (  3, 22.40)    long  ->   x0         "spilling expr"
+;  V19 rat5         [V19,T04] (  3, 17.92)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
 G_M60546_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x60]!
+            stp     fp, lr, [sp, #-0x50]!
             stp     x19, x20, [sp, #0x38]
-            stp     x21, x22, [sp, #0x48]
-            str     x23, [sp, #0x58]
+            str     x21, [sp, #0x48]
             mov     fp, sp
             str     xzr, [fp, #0x20]   // [V04 loc1]
-            add     x3, sp, #96
+            add     x3, sp, #80
             stp     x0, x3, [fp, #0x28]  // [V12 PSPSym]
             mov     x19, x0
             mov     x21, x1
             ; gcrRegs +[x21]
             mov     x20, x2
             ; gcrRegs +[x20]
-                     ;; size=44 bbWeight=1 PerfScore 8.50
+                      ;; size=40 bbWeight=1 PerfScore 7.50
 G_M60546_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x38]
             ldr     x11, [x0, #0x10]
@@ -61,7 +57,7 @@ G_M60546_IG04:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=000
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0.20 PerfScore 0.70
@@ -75,7 +71,7 @@ G_M60546_IG05:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
             str     x0, [fp, #0x18]    // [V03 loc0]
             ; GC ptr vars +{V03}
                        ;; size=16 bbWeight=1 PerfScore 5.50
-G_M60546_IG06:        ; bbWeight=1, gcVars=0000000000000004 {V03}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60546_IG06:        ; bbWeight=1, gcVars=0000000000000100 {V03}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
             movz    x21, #0xD1FFAB1E
             movk    x21, #0xD1FFAB1E LSL #16
             movk    x21, #0xD1FFAB1E LSL #32
@@ -84,61 +80,63 @@ G_M60546_IG06:        ; bbWeight=1, gcVars=0000000000000004 {V03}, gcrefRegs=100
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M60546_IG15
+            cbz     w0, G_M60546_IG16
+                       ;; size=28 bbWeight=1 PerfScore 7.00
+G_M60546_IG07:        ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x38]
             ldr     x1, [x0, #0x08]
             cmp     x1, #24
-            ble     G_M60546_IG09
-                       ;; size=44 bbWeight=1 PerfScore 14.50
-G_M60546_IG07:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x0, #0x18]
-            cbz     x22, G_M60546_IG09
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M60546_IG08:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M60546_IG10
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M60546_IG09:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            ble     G_M60546_IG10
+                       ;; size=16 bbWeight=4 PerfScore 30.00
+G_M60546_IG08:        ; bbWeight=3.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x11, [x0, #0x18]
+            cbz     x11, G_M60546_IG10
+                       ;; size=8 bbWeight=3.20 PerfScore 12.80
+G_M60546_IG09:        ; bbWeight=2.56, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M60546_IG11
+                       ;; size=4 bbWeight=2.56 PerfScore 2.56
+G_M60546_IG10:        ; bbWeight=1.44, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
-            mov     x22, x0
-                       ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M60546_IG10:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x19, #0x38]
-            ldr     x1, [x0, #0x08]
-            cmp     x1, #32
-            ble     G_M60546_IG13
-                       ;; size=16 bbWeight=1 PerfScore 7.50
-G_M60546_IG11:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x23, [x0, #0x20]
-            cbz     x23, G_M60546_IG13
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M60546_IG12:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M60546_IG14
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M60546_IG13:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            mov     x0, x19
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            ; gcr arg pop 0
-            mov     x23, x0
-                       ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M60546_IG14:        ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            mov     x11, x22
+            mov     x11, x0
+                       ;; size=24 bbWeight=1.44 PerfScore 5.04
+G_M60546_IG11:        ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [fp, #0x18]   // [V03 loc0]
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
             ; gcr arg pop 0
             str     x0, [fp, #0x20]    // [V04 loc1]
-            mov     x1, x23
+            ldr     x0, [x19, #0x38]
+            ; gcrRegs -[x0]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #32
+            ble     G_M60546_IG14
+                       ;; size=32 bbWeight=4 PerfScore 58.00
+G_M60546_IG12:        ; bbWeight=3.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x0, #0x20]
+            cbz     x1, G_M60546_IG14
+                       ;; size=8 bbWeight=3.20 PerfScore 12.80
+G_M60546_IG13:        ; bbWeight=2.56, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M60546_IG15
+                       ;; size=4 bbWeight=2.56 PerfScore 2.56
+G_M60546_IG14:        ; bbWeight=1.44, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+            mov     x1, x0
+                       ;; size=24 bbWeight=1.44 PerfScore 5.04
+G_M60546_IG15:        ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             add     x2, fp, #32   // [V04 loc1]
             mov     x0, x20
+            ; gcrRegs +[x0]
             movz    x3, #0xD1FFAB1E      // code for BenchmarkDotNet.Engines.Consumer:Consume[System.__Canon](byref):this
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #0xD1FFAB1E LSL #32
@@ -154,9 +152,9 @@ G_M60546_IG14:        ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbnz    w0, G_M60546_IG14
-                       ;; size=76 bbWeight=4 PerfScore 100.00
-G_M60546_IG15:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            cbnz    w0, G_M60546_IG07
+                       ;; size=52 bbWeight=4 PerfScore 68.00
+G_M60546_IG16:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20]
             ldr     x0, [fp, #0x18]    // [V03 loc0]
             ; gcrRegs +[x0]
@@ -167,45 +165,42 @@ G_M60546_IG15:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=16 bbWeight=1 PerfScore 6.50
-G_M60546_IG16:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x23, [sp, #0x58]
-            ldp     x21, x22, [sp, #0x48]
+G_M60546_IG17:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x21, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
-            ldp     fp, lr, [sp], #0x60
+            ldp     fp, lr, [sp], #0x50
             ret     lr
-                        ;; size=20 bbWeight=1 PerfScore 6.00
-G_M60546_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
-            stp     fp, lr, [sp, #-0x40]!
+                        ;; size=16 bbWeight=1 PerfScore 5.00
+G_M60546_IG18:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+            stp     fp, lr, [sp, #-0x30]!
             stp     x19, x20, [sp, #0x18]
-            stp     x21, x22, [sp, #0x28]
-            str     x23, [sp, #0x38]
-            add     x3, fp, #96
+            str     x21, [sp, #0x28]
+            add     x3, fp, #80
             str     x3, [sp, #0x10]
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M60546_IG18:        ; bbWeight=0, gcVars=0000000000000004 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; GC ptr vars +{V02 V03}
+                     ;; size=20 bbWeight=0 PerfScore 0.00
+G_M60546_IG19:        ; bbWeight=0, gcVars=0000000000000100 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; GC ptr vars +{V03}
             ldr     x0, [fp, #0x18]    // [V03 loc0]
             ; gcrRegs +[x0]
-            cbz     x0, G_M60546_IG19
+            cbz     x0, G_M60546_IG20
             movz    x21, #0xD1FFAB1E
             movk    x21, #0xD1FFAB1E LSL #16
             movk    x21, #0xD1FFAB1E LSL #32
             add     x11, x21, #8
             ldr     x1, [x11]
-            ; GC ptr vars -{V02 V03}
+            ; GC ptr vars -{V03}
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=32 bbWeight=0 PerfScore 0.00
-G_M60546_IG19:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
-            ldr     x23, [sp, #0x38]
...
  
+44 (+14.29%) : 2645.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpanSystem.__Canon:System.Span`1System.__Canon
@@ -8,26 +8,29 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  3.60)    long  ->  x20         single-def
+;  V00 TypeCtx      [V00,T01] (  7,  4.28)    long  ->  x20         single-def
 ;  V01 arg0         [V01,T00] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
 ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op <System.Span`1[System.__Canon]>
-;  V03 loc1         [V03,T06] (  4,  2   )     int  ->  x21        
-;  V04 loc2         [V04,T05] (  4,  2   )     ref  ->  x22         class-hnd single-def <<unknown class>>
+;  V03 loc1         [V03,T08] (  4,  2   )     int  ->  x21        
+;  V04 loc2         [V04,T07] (  4,  2   )     ref  ->  x22         class-hnd single-def <<unknown class>>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T07] (  3,  2   )    long  ->   x2         "spilling helperCall"
+;  V06 tmp1         [V06,T09] (  3,  2   )    long  ->   x2         "spilling helperCall"
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V09 tmp4         [V09    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V10 tmp5         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V12 tmp7         [V12,T08] (  2,  2   )   byref  ->  x19         single-def "Inlining Arg"
+;  V12 tmp7         [V12,T10] (  2,  2   )   byref  ->  x19         single-def "Inlining Arg"
 ;* V13 tmp8         [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp9         [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V15 tmp10        [V15,T03] (  3,  2.50)   byref  ->   x0         "field V02._reference (fldOffset=0x0)" P-INDEP
-;  V16 tmp11        [V16,T04] (  3,  2.50)     int  ->   x1         "field V02._length (fldOffset=0x8)" P-INDEP
-;  V17 tmp12        [V17,T09] (  2,  1   )   byref  ->   x0         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;  V18 tmp13        [V18,T10] (  2,  1   )     int  ->   x1         "field V07._length (fldOffset=0x8)" P-INDEP
+;  V15 tmp10        [V15,T04] (  3,  2.50)   byref  ->   x0         "field V02._reference (fldOffset=0x0)" P-INDEP
+;  V16 tmp11        [V16,T05] (  3,  2.50)     int  ->   x1         "field V02._length (fldOffset=0x8)" P-INDEP
+;  V17 tmp12        [V17,T11] (  2,  1   )   byref  ->   x0         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V18 tmp13        [V18,T12] (  2,  1   )     int  ->   x1         "field V07._length (fldOffset=0x8)" P-INDEP
 ;  V19 rat0         [V19,T02] (  3,  2.80)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;* V20 rat1         [V20,T13] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V21 rat2         [V21,T03] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V22 rat3         [V22,T06] (  2,  1.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
@@ -45,7 +48,7 @@ G_M30960_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             mov     x0, xzr
             ; byrRegs +[x0]
             mov     w1, wzr
-            cbz     x19, G_M30960_IG10
+            cbz     x19, G_M30960_IG13
                         ;; size=12 bbWeight=1 PerfScore 2.00
 G_M30960_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[x0]
@@ -68,7 +71,7 @@ G_M30960_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
 G_M30960_IG04:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
             ldr     w0, [x22, #0x08]
             cmp     w0, w21
-            blo     G_M30960_IG11
+            blo     G_M30960_IG14
             ldr     x0, [x20, #0x38]
             ldr     x2, [x0, #0x10]
             cbz     x2, G_M30960_IG06
@@ -81,7 +84,7 @@ G_M30960_IG06:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=000
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x2, x0
                        ;; size=24 bbWeight=0.10 PerfScore 0.35
 G_M30960_IG07:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
@@ -105,9 +108,26 @@ G_M30960_IG07:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
             ; gcrRegs -[x19]
                        ;; size=60 bbWeight=0.50 PerfScore 8.00
 G_M30960_IG08:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x20, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M30960_IG10
+                       ;; size=16 bbWeight=0.50 PerfScore 3.75
+G_M30960_IG09:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M30960_IG11
+                       ;; size=8 bbWeight=0.40 PerfScore 1.60
+G_M30960_IG10:        ; bbWeight=0.18, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x20
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.18 PerfScore 0.54
+G_M30960_IG11:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             add     x19, x22, #16
             ; byrRegs +[x19]
-            tbz     w21, #31, G_M30960_IG09
+            tbz     w21, #31, G_M30960_IG12
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -121,19 +141,19 @@ G_M30960_IG08:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
             blr     x2
             ; gcrRegs -[x22]
                        ;; size=52 bbWeight=0.50 PerfScore 5.00
-G_M30960_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M30960_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
             mov     x0, x19
             ; byrRegs +[x0]
             sxtw    w1, w21
                        ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M30960_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, epilog, nogc
+G_M30960_IG13:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, epilog, nogc
             ; byrRegs -[x19]
             ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
                        ;; size=16 bbWeight=1 PerfScore 4.00
-G_M30960_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30960_IG14:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; byrRegs -[x0]
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported()
             movk    x0, #0xD1FFAB1E LSL #16
@@ -143,7 +163,7 @@ G_M30960_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 308, prolog size 20, PerfScore 39.25, instruction count 77, allocated bytes for code 308 (MethodHash=041e870f) for method System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 352, prolog size 20, PerfScore 45.14, instruction count 88, allocated bytes for code 352 (MethodHash=041e870f) for method System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -154,7 +174,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 77 (0x0004d) Actual length = 308 (0x000134)
+  Function Length   : 88 (0x00058) Actual length = 352 (0x000160)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+40 (+15.38%) : 1729.dasm - System.Array:IndexOfSystem.__Canon:int (FullOpts)
@@ -8,11 +8,11 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T02] (  5,  4.36)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )     ref  ->  x19         class-hnd single-def <System.__Canon[]>
-;  V02 arg1         [V02,T06] (  3,  3   )     ref  ->  x22         ld-addr-op class-hnd single-def <System.__Canon>
-;  V03 arg2         [V03,T01] (  5,  5   )     int  ->  x20         single-def
-;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x21         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )     ref  ->  x20         class-hnd single-def <System.__Canon[]>
+;  V02 arg1         [V02,T07] (  3,  3   )     ref  ->  x23         ld-addr-op class-hnd single-def <System.__Canon>
+;  V03 arg2         [V03,T02] (  5,  5   )     int  ->  x21         single-def
+;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x22         single-def
 ;* V05 loc0         [V05    ] (  0,  0   )     int  ->  zero-ref   
 ;* V06 loc1         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;* V07 loc2         [V07    ] (  0,  0   )     int  ->  zero-ref   
@@ -24,80 +24,96 @@
 ;* V13 tmp4         [V13    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V15 tmp6         [V15,T04] (  3,  6   )     ref  ->   x0         single-def "argument with side effect"
-;  V16 cse0         [V16,T09] (  3,  3   )     int  ->   x1         "CSE - aggressive"
-;  V17 rat0         [V17,T08] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V18 rat1         [V18,T05] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V19 rat2         [V19,T07] (  3,  4.48)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V16 cse0         [V16,T10] (  3,  3   )     int  ->   x0         "CSE - aggressive"
+;* V17 rat0         [V17,T11] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V18 rat1         [V18,T05] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat2         [V19,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat3         [V20,T06] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V21 rat4         [V21,T08] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M13831_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x20]
-            stp     x21, x22, [sp, #0x30]
+            stp     x19, x20, [sp, #0x18]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x19, x1
-            ; gcrRegs +[x19]
-            mov     x22, x2
-            ; gcrRegs +[x22]
-            mov     w20, w3
-            mov     w21, w4
-                       ;; size=36 bbWeight=1 PerfScore 6.50
-G_M13831_IG02:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M13831_IG08
-            ldr     w1, [x19, #0x08]
-            cmp     w1, w20
-            blo     G_M13831_IG09
-            sub     w1, w1, w20
-            cmp     w1, w21
-            blo     G_M13831_IG10
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M13831_IG05
-                       ;; size=44 bbWeight=1 PerfScore 15.00
-G_M13831_IG03:        ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M13831_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M13831_IG04:        ; bbWeight=0.64, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            b       G_M13831_IG06
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M13831_IG05:        ; bbWeight=0.36, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     x23, x2
+            ; gcrRegs +[x23]
+            mov     w21, w3
+            mov     w22, w4
+                       ;; size=44 bbWeight=1 PerfScore 8.00
+G_M13831_IG02:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M13831_IG10
+            ldr     w0, [x20, #0x08]
+            cmp     w0, w21
+            blo     G_M13831_IG11
+            sub     w0, w0, w21
+            cmp     w0, w22
+            blo     G_M13831_IG12
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M13831_IG04
+                       ;; size=40 bbWeight=1 PerfScore 14.50
+G_M13831_IG03:        ; bbWeight=0.20, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x1, x0
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M13831_IG04:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M13831_IG07
+                       ;; size=16 bbWeight=1 PerfScore 7.50
+G_M13831_IG05:        ; bbWeight=0.80, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M13831_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M13831_IG06:        ; bbWeight=0.64, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            b       G_M13831_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M13831_IG07:        ; bbWeight=0.36, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M13831_IG06:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x1
+G_M13831_IG08:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E      // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs +[x0]
-            mov     x1, x19
+            mov     x1, x20
             ; gcrRegs +[x1]
-            mov     x2, x22
+            mov     x2, x23
             ; gcrRegs +[x2]
-            mov     w3, w20
-            mov     w4, w21
+            mov     w3, w21
+            mov     w4, w22
             ldr     x5, [x0]
             ldr     x5, [x5, #0x50]
             ldr     x5, [x5]
             blr     x5
-            ; gcrRegs -[x0-x2 x19 x22]
-                       ;; size=56 bbWeight=1 PerfScore 18.00
-G_M13831_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
+            ; gcrRegs -[x0-x2 x20 x23]
+                       ;; size=52 bbWeight=1 PerfScore 17.50
+G_M13831_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 4.00
-G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                      ;; size=20 bbWeight=1 PerfScore 6.00
+G_M13831_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             mov     w0, #2
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -106,7 +122,7 @@ G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             blr     x1
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_IndexMustBeLessOrEqual()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -114,7 +130,7 @@ G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -123,7 +139,7 @@ G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 260, prolog size 20, PerfScore 48.42, instruction count 65, allocated bytes for code 260 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
+; Total bytes of code 300, prolog size 24, PerfScore 59.02, instruction count 75, allocated bytes for code 300 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +150,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 65 (0x00041) Actual length = 260 (0x000104)
+  Function Length   : 75 (0x0004b) Actual length = 300 (0x00012c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,10 +158,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
-    E4          end
-    E4          end
 
  
+40 (+20.83%) : 7564.dasm - System.Array:SortSystem.__Canon (FullOpts)
@@ -8,86 +8,102 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  4.36)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )     ref  ->   x1         class-hnd single-def <System.__Canon[]>
-;  V02 arg1         [V02,T02] (  4,  4   )     ref  ->  x19         class-hnd single-def <System.Comparison`1[System.__Canon]>
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )     ref  ->  x20         class-hnd single-def <System.__Canon[]>
+;  V02 arg1         [V02,T02] (  4,  4   )     ref  ->  x21         class-hnd single-def <System.Comparison`1[System.__Canon]>
 ;* V03 loc0         [V03    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[System.__Canon]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
 ;* V06 tmp2         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp3         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp4         [V08,T07] (  2,  4   )     int  ->  x21         "Inlining Arg"
-;  V09 tmp5         [V09,T06] (  2,  4   )   byref  ->  x20         single-def "Inlining Arg"
+;  V08 tmp4         [V08,T08] (  2,  4   )     int  ->  x20         "Inlining Arg"
+;  V09 tmp5         [V09,T07] (  2,  4   )   byref  ->  x22         single-def "Inlining Arg"
 ;* V10 tmp6         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp7         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp8         [V12    ] (  0,  0   )   byref  ->  zero-ref    "field V03._reference (fldOffset=0x0)" P-INDEP
 ;* V13 tmp9         [V13    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0x8)" P-INDEP
-;  V14 tmp10        [V14,T09] (  2,  2   )   byref  ->  x20         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;  V15 tmp11        [V15,T10] (  2,  2   )     int  ->  x21         "field V05._length (fldOffset=0x8)" P-INDEP
-;  V16 tmp12        [V16,T08] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V17 rat0         [V17,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V18 rat1         [V18,T03] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V19 rat2         [V19,T04] (  3,  4.48)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V14 tmp10        [V14,T10] (  2,  2   )   byref  ->  x22         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;  V15 tmp11        [V15,T11] (  2,  2   )     int  ->  x20         "field V05._length (fldOffset=0x8)" P-INDEP
+;  V16 tmp12        [V16,T09] (  2,  4   )    long  ->   x0         "argument with side effect"
+;* V17 rat0         [V17,T12] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V18 rat1         [V18,T03] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat2         [V19,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat3         [V20,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V21 rat4         [V21,T05] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M37190_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
-            mov     x19, x2
-            ; gcrRegs +[x19]
-                       ;; size=24 bbWeight=1 PerfScore 5.00
-G_M37190_IG02:        ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x1]
-            cbz     x1, G_M37190_IG08
-            cbz     x19, G_M37190_IG09
-            add     x20, x1, #16
-            ; byrRegs +[x20]
-            ldr     w21, [x1, #0x08]
-            ldr     x1, [x0, #0x38]
-            ; gcrRegs -[x1]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M37190_IG05
-                       ;; size=32 bbWeight=1 PerfScore 13.00
-G_M37190_IG03:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
-            ldr     x2, [x1, #0x18]
-            cbz     x2, G_M37190_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M37190_IG04:        ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
-            mov     x0, x2
-            b       G_M37190_IG06
-                       ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M37190_IG05:        ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+            str     x0, [fp, #0x18]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     x21, x2
+            ; gcrRegs +[x21]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M37190_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M37190_IG10
+            cbz     x21, G_M37190_IG11
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M37190_IG04
+                       ;; size=20 bbWeight=1 PerfScore 9.00
+G_M37190_IG03:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-                       ;; size=16 bbWeight=0.36 PerfScore 0.90
-G_M37190_IG06:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
-            mov     x1, x20
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M37190_IG04:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            add     x22, x20, #16
+            ; byrRegs +[x22]
+            ldr     w20, [x20, #0x08]
+            ; gcrRegs -[x20]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M37190_IG07
+                       ;; size=24 bbWeight=1 PerfScore 11.00
+G_M37190_IG05:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M37190_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M37190_IG06:        ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            b       G_M37190_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M37190_IG07:        ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M37190_IG08:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            mov     x1, x22
             ; byrRegs +[x1]
-            mov     w2, w21
-            mov     x3, x19
+            mov     w2, w20
+            mov     x3, x21
             ; gcrRegs +[x3]
             movz    x4, #0xD1FFAB1E      // code for <unknown method>
             movk    x4, #0xD1FFAB1E LSL #16
             movk    x4, #0xD1FFAB1E LSL #32
             ldr     x4, [x4]
             blr     x4
-            ; gcrRegs -[x3 x19]
-            ; byrRegs -[x1 x20]
+            ; gcrRegs -[x3 x21]
+            ; byrRegs -[x1 x22]
                         ;; size=32 bbWeight=1 PerfScore 7.00
-G_M37190_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+G_M37190_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
-G_M37190_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                      ;; size=16 bbWeight=1 PerfScore 4.00
+G_M37190_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             mov     w0, #2
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -96,7 +112,7 @@ G_M37190_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             blr     x1
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M37190_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37190_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     w0, #29
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -106,7 +122,7 @@ G_M37190_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 192, prolog size 20, PerfScore 35.06, instruction count 48, allocated bytes for code 192 (MethodHash=c2626eb9) for method System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
+; Total bytes of code 232, prolog size 20, PerfScore 42.52, instruction count 58, allocated bytes for code 232 (MethodHash=c2626eb9) for method System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -117,7 +133,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 48 (0x00030) Actual length = 192 (0x0000c0)
+  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)
@@ -125,9 +141,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
benchmarks.run_pgo.linux.arm64.checked.mch
-40 (-11.36%) : 16588.dasm - System.Threading.Tasks.ValueTask:AsTask():System.Threading.Tasks.Task:this (Tier1)
@@ -10,17 +10,16 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  3.49)   byref  ->  x19         this single-def
-;  V01 loc0         [V01,T01] ( 10,  4.97)     ref  ->  x20         class-hnd single-def <<unknown class>>
+;  V01 loc0         [V01,T01] (  9,  4.97)     ref  ->  x20         class-hnd single-def <<unknown class>>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T06] (  2,  0.98)     int  ->   x0        
-;  V04 tmp2         [V04,T05] (  4,  2   )     ref  ->   x0        
-;  V05 tmp3         [V05,T07] (  2,  1.97)     ref  ->   x0         class-hnd single-def "dup spill" <System.Threading.Tasks.Task>
+;  V03 tmp1         [V03,T05] (  2,  0.98)     int  ->   x0        
+;  V04 tmp2         [V04,T04] (  4,  2   )     ref  ->   x0        
+;  V05 tmp3         [V05,T06] (  2,  1.97)     ref  ->   x0         class-hnd single-def "dup spill" <System.Threading.Tasks.Task>
 ;* V06 tmp4         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <<unknown class>>
 ;* V07 tmp5         [V07    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V08 tmp6         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V09 rat0         [V09,T02] (  6,  3.93)     ref  ->   x2         class-hnd "replacement local" <System.Threading.Tasks.Task>
-;  V10 rat1         [V10,T04] (  5,  3.44)     ref  ->   x3         class-hnd "replacement local" <<unknown class>>
-;  V11 rat2         [V11,T03] (  6,  3.93)     ref  ->   x0         class-hnd "replacement local" <System.Threading.Tasks.Task>
+;  V10 rat1         [V10,T03] (  6,  3.93)     ref  ->   x0         class-hnd "replacement local" <System.Threading.Tasks.Task>
 ;
 ; Lcl frame size = 0
 
@@ -34,7 +33,7 @@ G_M44435_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M44435_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
             ldr     x20, [x19]
             ; gcrRegs +[x20]
-            cbz     x20, G_M44435_IG08
+            cbz     x20, G_M44435_IG06
                        ;; size=8 bbWeight=1 PerfScore 4.00
 G_M44435_IG03:        ; bbWeight=0.49, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
             mov     x2, x20
@@ -44,58 +43,52 @@ G_M44435_IG03:        ; bbWeight=0.49, gcrefRegs=100000 {x20}, byrefRegs=80000 {
 G_M44435_IG04:        ; bbWeight=0.25, gcrefRegs=100004 {x2 x20}, byrefRegs=80000 {x19}, byref, isz
             ldr     x2, [x2]
             ; gcrRegs -[x2]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            cmp     x2, x0
-            bne     G_M44435_IG15
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            cmp     x2, x1
+            bne     G_M44435_IG13
             mov     x2, xzr
             ; gcrRegs +[x2]
                        ;; size=28 bbWeight=0.25 PerfScore 1.60
 G_M44435_IG05:        ; bbWeight=0.49, gcrefRegs=100004 {x2 x20}, byrefRegs=80000 {x19}, byref, isz
-            cbnz    x2, G_M44435_IG08
-            mov     x3, x20
-            ; gcrRegs +[x3]
-            cbz     x3, G_M44435_IG07
-                       ;; size=12 bbWeight=0.49 PerfScore 1.23
-G_M44435_IG06:        ; bbWeight=0.25, gcrefRegs=100008 {x3 x20}, byrefRegs=80000 {x19}, byref, isz
-            ; gcrRegs -[x2]
-            ldr     x0, [x3]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            cmp     x0, x1
-            bne     G_M44435_IG16
-                       ;; size=24 bbWeight=0.25 PerfScore 1.47
-G_M44435_IG07:        ; bbWeight=0.49, gcrefRegs=100008 {x3 x20}, byrefRegs=80000 {x19}, byref, isz
-            cmp     x3, #0
+            cbnz    x2, G_M44435_IG06
+            mov     x1, x20
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_INITINSTCLASS
+            ; gcrRegs -[x1-x2] +[x0]
+            ; gcr arg pop 0
+            cmp     x0, #0
             cset    x0, ne
+            ; gcrRegs -[x0]
             tst     w0, #255
-            bne     G_M44435_IG09
-            b       G_M44435_IG17
-                       ;; size=20 bbWeight=0.49 PerfScore 1.72
-G_M44435_IG08:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ; gcrRegs -[x3]
-            cbz     x20, G_M44435_IG13
+            bne     G_M44435_IG07
+            b       G_M44435_IG14
+                       ;; size=44 bbWeight=0.49 PerfScore 3.69
+G_M44435_IG06:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+            cbz     x20, G_M44435_IG11
                      ;; size=4 bbWeight=1 PerfScore 1.00
-G_M44435_IG09:        ; bbWeight=0.49, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M44435_IG07:        ; bbWeight=0.49, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
             mov     x0, x20
             ; gcrRegs +[x0]
-            cbz     x0, G_M44435_IG11
+            cbz     x0, G_M44435_IG09
                       ;; size=8 bbWeight=0.49 PerfScore 0.74
-G_M44435_IG10:        ; bbWeight=0.25, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz
+G_M44435_IG08:        ; bbWeight=0.25, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz
             ldr     x0, [x0]
             ; gcrRegs -[x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M44435_IG18
+            bne     G_M44435_IG15
             mov     x0, xzr
             ; gcrRegs +[x0]
                        ;; size=28 bbWeight=0.25 PerfScore 1.60
-G_M44435_IG11:        ; bbWeight=0.49, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz
-            cbnz    x0, G_M44435_IG14
+G_M44435_IG09:        ; bbWeight=0.49, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, isz
+            cbnz    x0, G_M44435_IG12
             mov     x0, x19
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
@@ -106,13 +99,13 @@ G_M44435_IG11:        ; bbWeight=0.49, gcrefRegs=100001 {x0 x20}, byrefRegs=8000
             movk    x2, #0xD1FFAB1E LSL #32
             ldr     x2, [x2]
                        ;; size=28 bbWeight=0.49 PerfScore 3.19
-G_M44435_IG12:        ; bbWeight=0.49, epilog, nogc, extend
+G_M44435_IG10:        ; bbWeight=0.49, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             br      x2
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0.49 PerfScore 1.47
-G_M44435_IG13:        ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M44435_IG11:        ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x1 x20]
             ; byrRegs -[x0 x19]
             movz    x0, #0xD1FFAB1E
@@ -121,12 +114,12 @@ G_M44435_IG13:        ; bbWeight=0.51, gcVars=0000000000000000 {}, gcrefRegs=000
             ldr     x0, [x0]
             ; gcrRegs +[x0]
                        ;; size=16 bbWeight=0.51 PerfScore 2.29
-G_M44435_IG14:        ; bbWeight=0.51, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M44435_IG12:        ; bbWeight=0.51, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=0.51 PerfScore 1.53
-G_M44435_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref
+G_M44435_IG13:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref
             ; gcrRegs -[x0] +[x20]
             ; byrRegs +[x19]
             mov     x1, x20
@@ -134,29 +127,15 @@ G_M44435_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
+            bl      CORINFO_HELP_ISINSTANCEOFARRAY
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             mov     x2, x0
             ; gcrRegs +[x2]
             b       G_M44435_IG05
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M44435_IG16:        ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M44435_IG14:        ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
             ; gcrRegs -[x0 x2]
-            mov     x1, x20
-            ; 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
-            mov     x3, x0
-            ; gcrRegs +[x3]
-            b       G_M44435_IG07
-                       ;; size=28 bbWeight=0 PerfScore 0.00
-G_M44435_IG17:        ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            ; gcrRegs -[x0 x3]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -169,21 +148,21 @@ G_M44435_IG17:        ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
             ldr     x2, [x2]
             blr     x2
             ; gcr arg pop 0
-            b       G_M44435_IG09
+            b       G_M44435_IG07
                       ;; size=48 bbWeight=0 PerfScore 0.00
-G_M44435_IG18:        ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M44435_IG15:        ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
             mov     x1, x20
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
+            bl      CORINFO_HELP_ISINSTANCEOFARRAY
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            b       G_M44435_IG11
+            b       G_M44435_IG09
                       ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 352, prolog size 16, PerfScore 25.58, instruction count 88, allocated bytes for code 352 (MethodHash=ff38526c) for method System.Threading.Tasks.ValueTask:AsTask():System.Threading.Tasks.Task:this (Tier1)
+; Total bytes of code 312, prolog size 16, PerfScore 24.84, instruction count 78, allocated bytes for code 312 (MethodHash=ff38526c) for method System.Threading.Tasks.ValueTask:AsTask():System.Threading.Tasks.Task:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -194,7 +173,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 88 (0x00058) Actual length = 352 (0x000160)
+  Function Length   : 78 (0x0004e) Actual length = 312 (0x000138)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-36 (-6.29%) : 16347.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
@@ -9,22 +9,21 @@
 ; 2 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] ( 14,  8.20)     ref  ->  x19         class-hnd single-def <System.Object>
-;  V01 arg1         [V01,T03] (  3,  2   )     ref  ->  x20         class-hnd single-def <System.Threading.Thread>
-;  V02 loc0         [V02,T04] (  4,  2   )     ref  ->   x0         class-hnd single-def <<unknown class>>
+;  V00 arg0         [V00,T00] ( 13,  7.97)     ref  ->  x19         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T02] (  3,  2   )     ref  ->  x20         class-hnd single-def <System.Threading.Thread>
+;  V02 loc0         [V02,T03] (  4,  2   )     ref  ->   x0         class-hnd single-def <<unknown class>>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd 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.Threading.Channels.AsyncOperation`1[ubyte]>
 ;* V06 tmp3         [V06    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V07 tmp4         [V07,T08] (  2,  0   )     ref  ->   x1         class-hnd exact single-def "dup spill" <System.Threading.ContextCallback>
-;  V08 tmp5         [V08,T09] (  2,  0   )     ref  ->  x20         class-hnd exact single-def "impAppendStmt" <System.Threading.ExecutionContext>
+;  V07 tmp4         [V07,T07] (  2,  0   )     ref  ->   x1         class-hnd exact single-def "dup spill" <System.Threading.ContextCallback>
+;  V08 tmp5         [V08,T08] (  2,  0   )     ref  ->  x20         class-hnd exact single-def "impAppendStmt" <System.Threading.ExecutionContext>
 ;* V09 tmp6         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V10 tmp7         [V10,T06] (  4,  0   )     ref  ->   x1        
-;  V11 tmp8         [V11,T07] (  4,  0   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.Threading.ContextCallback>
-;  V12 tmp9         [V12,T05] (  3,  1.77)     ref  ->   x2         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-;  V13 tmp10        [V13,T10] (  2,  0   )     ref  ->   x1         single-def "argument with side effect"
+;  V10 tmp7         [V10,T05] (  4,  0   )     ref  ->   x1        
+;  V11 tmp8         [V11,T06] (  4,  0   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.Threading.ContextCallback>
+;  V12 tmp9         [V12,T04] (  3,  1.77)     ref  ->   x2         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;  V13 tmp10        [V13,T09] (  2,  0   )     ref  ->   x1         single-def "argument with side effect"
 ;  V14 rat0         [V14,T01] (  6,  8   )     ref  ->   x0         class-hnd "replacement local" <<unknown class>>
-;  V15 rat1         [V15,T02] (  5,  7.44)     ref  ->   x2         class-hnd "replacement local" <System.Threading.IThreadPoolWorkItem>
 ;
 ; Lcl frame size = 8
 
@@ -58,7 +57,7 @@ G_M60059_IG04:        ; bbWeight=0.20, gcrefRegs=180000 {x19 x20}, byrefRegs=000
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
+            bl      CORINFO_HELP_ISINSTANCEOFARRAY
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             b       G_M60059_IG06
@@ -69,50 +68,31 @@ G_M60059_IG05:        ; bbWeight=0.29, gcrefRegs=180000 {x19 x20}, byrefRegs=000
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=0.29 PerfScore 0.15
 G_M60059_IG06:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
-            cbnz    x0, G_M60059_IG15
-            mov     x2, x19
-            ; gcrRegs +[x2]
-            cbz     x2, G_M60059_IG09
-                       ;; size=12 bbWeight=1 PerfScore 2.50
-G_M60059_IG07:        ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x20]
-            ldr     x1, [x2]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #0xD1FFAB1E LSL #32
-            cmp     x1, x0
-            beq     G_M60059_IG09
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M60059_IG08:        ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x2]
+            cbnz    x0, G_M60059_IG12
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
+            ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
-            ; gcrRegs -[x1] +[x0]
+            bl      CORINFO_HELP_INITINSTCLASS
+            ; gcrRegs -[x1 x20] +[x0]
             ; gcr arg pop 0
-            mov     x2, x0
-            ; gcrRegs +[x2]
-                       ;; size=24 bbWeight=0.22 PerfScore 0.77
-G_M60059_IG09:        ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+            cbz     x0, G_M60059_IG14
+                       ;; size=28 bbWeight=1 PerfScore 5.00
+G_M60059_IG07:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
-            cbz     x2, G_M60059_IG17
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M60059_IG10:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x2]
             ldr     x14, [x19]
             movz    x15, #0xD1FFAB1E
             movk    x15, #0xD1FFAB1E LSL #16
             movk    x15, #0xD1FFAB1E LSL #32
             cmp     x14, x15
-            bne     G_M60059_IG13
+            bne     G_M60059_IG10
                      ;; size=24 bbWeight=1 PerfScore 6.00
-G_M60059_IG11:        ; bbWeight=0.59, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M60059_IG08:        ; bbWeight=0.59, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x14, [x19, #0x28]
             ; gcrRegs +[x14]
-            cbnz    x14, G_M60059_IG18
+            cbnz    x14, G_M60059_IG15
             ldr     x2, [x19, #0x10]
             ; gcrRegs +[x2]
             movz    x14, #0xD1FFAB1E
@@ -133,14 +113,14 @@ G_M60059_IG11:        ; bbWeight=0.59, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ldr     x2, [x2, #0x18]
             ; gcrRegs -[x2]
                        ;; size=48 bbWeight=0.59 PerfScore 12.98
-G_M60059_IG12:        ; bbWeight=0.59, epilog, nogc, extend
+G_M60059_IG09:        ; bbWeight=0.59, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x2
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.59 PerfScore 2.95
-G_M60059_IG13:        ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M60059_IG10:        ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0-x1]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -149,14 +129,14 @@ G_M60059_IG13:        ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=800
             movk    x11, #0xD1FFAB1E LSL #32
             ldr     x1, [x11]
                        ;; size=20 bbWeight=0.41 PerfScore 2.05
-G_M60059_IG14:        ; bbWeight=0.41, epilog, nogc, extend
+G_M60059_IG11:        ; bbWeight=0.41, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x1
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.41 PerfScore 2.05
-G_M60059_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M60059_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x19] +[x20]
             mov     x1, x20
             ; gcrRegs +[x1]
@@ -164,14 +144,14 @@ G_M60059_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001
             ldr     x2, [x2, #0x50]
             ldr     x2, [x2, #0x18]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M60059_IG16:        ; bbWeight=0, epilog, nogc, extend
+G_M60059_IG13:        ; bbWeight=0, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x2
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M60059_IG17:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M60059_IG14:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0-x1 x20] +[x19]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -185,27 +165,29 @@ G_M60059_IG17:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
             ldr     x2, [x2]
             blr     x2
             ; gcr arg pop 0
-            b       G_M60059_IG10
+            b       G_M60059_IG07
                       ;; size=48 bbWeight=0 PerfScore 0.00
-G_M60059_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M60059_IG15:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x20, [x19, #0x28]
             ; gcrRegs +[x20]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, wzr
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             ldr     x1, [x0]
             ; gcrRegs +[x1]
-            cbnz    x1, G_M60059_IG19
+            cbnz    x1, G_M60059_IG16
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             mov     x21, x0
@@ -215,7 +197,8 @@ G_M60059_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, wzr
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
             movk    x1, #0xD1FFAB1E LSL #16
@@ -224,6 +207,7 @@ G_M60059_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs +[x1]
             mov     x0, x21
             ; gcrRegs +[x0]
+            ; byrRegs -[x0]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
@@ -238,7 +222,8 @@ G_M60059_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, wzr
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x14, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
             movk    x14, #0xD1FFAB1E LSL #16
@@ -247,10 +232,11 @@ G_M60059_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x15]
+            ; byrRegs -[x0]
             mov     x1, x21
             ; gcrRegs +[x1]
                        ;; size=180 bbWeight=0 PerfScore 0.00
-G_M60059_IG19:        ; bbWeight=0, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
+G_M60059_IG16:        ; bbWeight=0, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x21]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -261,7 +247,7 @@ G_M60059_IG19:        ; bbWeight=0, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=000
             movk    x3, #0xD1FFAB1E LSL #32
             ldr     x3, [x3]
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M60059_IG20:        ; bbWeight=0, epilog, nogc, extend
+G_M60059_IG17:        ; bbWeight=0, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
@@ -269,7 +255,7 @@ G_M60059_IG20:        ; bbWeight=0, epilog, nogc, extend
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 572, prolog size 24, PerfScore 43.27, instruction count 143, allocated bytes for code 572 (MethodHash=13841564) for method System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
+; Total bytes of code 536, prolog size 24, PerfScore 41.00, instruction count 134, allocated bytes for code 536 (MethodHash=13841564) for method System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -280,7 +266,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
...
  
-20 (-5.49%) : 8139.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
@@ -8,42 +8,40 @@
 ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 785
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  4,  4   )     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
+;  V00 this         [V00,T00] (  7,  5   )     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
 ;  V01 arg1         [V01,T03] (  4,  3   )   ubyte  ->  x20         single-def
-;  V02 loc0         [V02,T11] (  3,  2   )     ref  ->  x23         class-hnd single-def <<unknown class>>
+;  V02 loc0         [V02,T10] (  3,  2   )     ref  ->  x22         class-hnd single-def <<unknown class>>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V06 tmp3         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp4         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp5         [V08,T12] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V08 tmp5         [V08,T11] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;  V09 tmp6         [V09,T07] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V10 tmp7         [V10,T16] (  2,  0   )    long  ->   x0         "argument with side effect"
+;  V10 tmp7         [V10,T15] (  2,  0   )    long  ->   x0         "argument with side effect"
 ;  V11 tmp8         [V11,T08] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V12 cse0         [V12,T10] (  5,  3   )     ref  ->  x22         "CSE - aggressive"
-;  V13 cse1         [V13,T09] (  8,  3.20)    long  ->  x21         "CSE - aggressive"
-;  V14 rat0         [V14,T04] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V15 rat1         [V15,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V16 rat2         [V16,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V17 rat3         [V17,T13] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V18 rat4         [V18,T14] (  3,  0   )    long  ->   x0         "runtime lookup"
-;  V19 rat5         [V19,T15] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V20 rat6         [V20,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V21 rat7         [V21,T02] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V12 cse0         [V12,T09] (  8,  3.20)    long  ->  x21         "CSE - aggressive"
+;  V13 rat0         [V13,T04] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V14 rat1         [V14,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V15 rat2         [V15,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V16 rat3         [V16,T12] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V17 rat4         [V17,T13] (  3,  0   )    long  ->   x0         "runtime lookup"
+;  V18 rat5         [V18,T14] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat6         [V19,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat7         [V20,T02] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M18513_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x18]
-            stp     x21, x22, [sp, #0x28]
-            str     x23, [sp, #0x38]
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
+            str     x0, [fp, #0x18]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     w20, w1
-                      ;; size=32 bbWeight=1 PerfScore 6.50
+                      ;; size=28 bbWeight=1 PerfScore 5.50
 G_M18513_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x21, [x19]
             mov     x0, x21
@@ -60,118 +58,114 @@ G_M18513_IG04:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.20 PerfScore 0.50
 G_M18513_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x19, #0x08]
-            ; gcrRegs +[x22]
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            mov     x23, x0
-            ; gcrRegs +[x23]
-            cbnz    x23, G_M18513_IG11
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            cbnz    x22, G_M18513_IG11
             tst     w20, #255
             bne     G_M18513_IG15
-                        ;; size=28 bbWeight=1 PerfScore 7.50
-G_M18513_IG06:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x23]
+                      ;; size=24 bbWeight=1 PerfScore 7.00
+G_M18513_IG06:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0 x22]
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x0, [x0, #0x30]
             cbz     x0, G_M18513_IG08
                        ;; size=16 bbWeight=1 PerfScore 10.00
-G_M18513_IG07:        ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG07:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M18513_IG09
                        ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M18513_IG08:        ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG08:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M18513_IG09:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x1, x22
+G_M18513_IG09:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             ldr     x2, [x2]
-                     ;; size=20 bbWeight=1 PerfScore 5.00
+                      ;; size=20 bbWeight=1 PerfScore 7.50
 G_M18513_IG10:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=1 PerfScore 6.00
-G_M18513_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[x1 x22] +[x23]
+                       ;; size=16 bbWeight=1 PerfScore 4.00
+G_M18513_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[x1] +[x22]
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x11, [x0, #0x40]
             cbz     x11, G_M18513_IG12
             b       G_M18513_IG13
                        ;; size=20 bbWeight=0 PerfScore 0.00
-G_M18513_IG12:        ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG12:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M18513_IG13:        ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG13:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             uxtb    w1, w20
-            mov     x0, x23
+            mov     x0, x22
             ; gcrRegs +[x0]
             ldr     x2, [x11]
                        ;; size=12 bbWeight=0 PerfScore 0.00
 G_M18513_IG14:        ; bbWeight=0, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0 PerfScore 0.00
-G_M18513_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[x0 x23] +[x22]
+                       ;; size=16 bbWeight=0 PerfScore 0.00
+G_M18513_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[x0 x22]
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x0, [x0, #0x38]
             cbz     x0, G_M18513_IG16
             b       G_M18513_IG17
                        ;; size=20 bbWeight=0 PerfScore 0.00
-G_M18513_IG16:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG16:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0 PerfScore 0.00
-G_M18513_IG17:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            mov     x1, x22
+G_M18513_IG17:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG06
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG06
@@ -179,14 +173,13 @@ G_M18513_IG17:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {
             ; gcrRegs -[x0]
                        ;; size=40 bbWeight=0 PerfScore 0.00
 G_M18513_IG18:        ; bbWeight=0, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=20 bbWeight=0 PerfScore 0.00
+                      ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 364, prolog size 32, PerfScore 51.60, instruction count 91, allocated bytes for code 364 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
+; Total bytes of code 344, prolog size 28, PerfScore 50.60, instruction count 86, allocated bytes for code 344 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -197,7 +190,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 91 (0x0005b) Actual length = 364 (0x00016c)
+  Function Length   : 86 (0x00056) Actual length = 344 (0x000158)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -211,9 +204,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
...
  
+48 (+36.36%) : 25528.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,84 +9,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  3,  2.20)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T00] (  5,  3.25)    long  ->   x1         single-def
-;  V02 arg1         [V02,T01] (  4,  3.20)   byref  ->  x19         single-def
+;  V00 this         [V00,T02] (  3,  2.20)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  3.52)    long  ->  x19         single-def
+;  V02 arg1         [V02,T01] (  4,  3.20)   byref  ->  x20         single-def
 ;  V03 loc0         [V03,T03] (  7,  3.82)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T04] (  4,  1.64)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T04] (  4,  1.64)     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  0.82)    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  0.82)    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  1.15)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  1.15)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  0.66)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.20 PerfScore 1.43
-G_M58319_IG04:        ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.16, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.16 PerfScore 0.16
-G_M58319_IG05:        ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.04, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.04 PerfScore 0.12
-G_M58319_IG06:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.20 PerfScore 2.25
+G_M58319_IG07:        ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.16 PerfScore 0.66
+G_M58319_IG08:        ; bbWeight=0.07, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.07 PerfScore 0.22
+G_M58319_IG09:        ; bbWeight=0.20, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.20 PerfScore 1.43
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.20 PerfScore 0.72
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 17.66, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 19.57, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -97,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +126,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+48 (+36.36%) : 25768.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,84 +9,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  3,  2.16)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T00] (  5,  3.19)    long  ->   x1         single-def
-;  V02 arg1         [V02,T01] (  4,  3.16)   byref  ->  x19         single-def
+;  V00 this         [V00,T02] (  3,  2.16)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  3.41)    long  ->  x19         single-def
+;  V02 arg1         [V02,T01] (  4,  3.16)   byref  ->  x20         single-def
 ;  V03 loc0         [V03,T03] (  7,  3.64)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T04] (  4,  1.27)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T04] (  4,  1.27)     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  0.64)    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  0.64)    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  0.89)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  0.89)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  0.51)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.16, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.16 PerfScore 1.12
-G_M58319_IG04:        ; bbWeight=0.13, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.13, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.13 PerfScore 0.13
-G_M58319_IG05:        ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.03, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.03 PerfScore 0.10
-G_M58319_IG06:        ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.16, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.16 PerfScore 1.75
+G_M58319_IG07:        ; bbWeight=0.13, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.13 PerfScore 0.51
+G_M58319_IG08:        ; bbWeight=0.06, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.06 PerfScore 0.17
+G_M58319_IG09:        ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.16 PerfScore 1.12
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.16 PerfScore 0.56
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 16.95, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 18.33, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -97,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +126,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+48 (+36.36%) : 27300.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,84 +9,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  3,  2.19)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T00] (  5,  3.23)    long  ->   x1         single-def
-;  V02 arg1         [V02,T01] (  4,  3.19)   byref  ->  x19         single-def
+;  V00 this         [V00,T02] (  3,  2.19)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  3.49)    long  ->  x19         single-def
+;  V02 arg1         [V02,T01] (  4,  3.19)   byref  ->  x20         single-def
 ;  V03 loc0         [V03,T03] (  7,  3.77)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T04] (  4,  1.53)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T04] (  4,  1.53)     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  0.77)    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  0.77)    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  1.07)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  1.07)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  0.61)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.19, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.19, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.19 PerfScore 1.34
-G_M58319_IG04:        ; bbWeight=0.15, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.15, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.15 PerfScore 0.15
-G_M58319_IG05:        ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.04, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.04 PerfScore 0.11
-G_M58319_IG06:        ; bbWeight=0.19, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.19, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.19 PerfScore 2.10
+G_M58319_IG07:        ; bbWeight=0.15, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.15 PerfScore 0.61
+G_M58319_IG08:        ; bbWeight=0.07, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.07 PerfScore 0.21
+G_M58319_IG09:        ; bbWeight=0.19, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.19 PerfScore 1.34
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.19 PerfScore 0.67
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 17.45, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 19.20, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -97,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +126,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
benchmarks.run_tiered.linux.arm64.checked.mch
-24 (-4.51%) : 1603.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:GetListByName(ulong,int,ulong,int,int,int):System.Canon[]:this (Tier1)
@@ -9,23 +9,23 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 10,  6.50)     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-;  V01 arg1         [V01,T09] (  3,  2.50)    long  ->   x1         single-def
-;  V02 arg2         [V02,T05] (  4,  3.50)     int  ->   x2         single-def
-;  V03 arg3         [V03,T06] (  4,  3.50)    long  ->  x21         single-def
-;  V04 arg4         [V04,T07] (  4,  3.50)     int  ->  x22         single-def
-;  V05 arg5         [V05,T08] (  3,  3   )     int  ->  x23         single-def
-;  V06 arg6         [V06,T02] (  4,  4   )     int  ->  x20         single-def
+;  V01 arg1         [V01,T08] (  3,  2.50)    long  ->   x1         single-def
+;  V02 arg2         [V02,T04] (  4,  3.50)     int  ->   x2         single-def
+;  V03 arg3         [V03,T05] (  4,  3.50)    long  ->  x21         single-def
+;  V04 arg4         [V04,T06] (  4,  3.50)     int  ->  x22         single-def
+;  V05 arg5         [V05,T07] (  3,  3   )     int  ->  x23         single-def
+;  V06 arg6         [V06,T01] (  4,  4   )     int  ->  x20         single-def
 ;  V07 loc0         [V07    ] ( 10,  6.50)  struct (24) [fp+0x18]  do-not-enreg[XSF] addr-exposed ld-addr-op <System.RuntimeType+RuntimeTypeCache+Filter>
-;  V08 loc1         [V08,T03] ( 10,  5.62)     ref  ->  x21         class-hnd <<unknown class>>
+;  V08 loc1         [V08,T03] (  9,  5.50)     ref  ->  x21         class-hnd <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T11] (  4,  2.75)    long  ->   x1         "spilling helperCall"
-;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V12 tmp3         [V12,T01] (  5,  6.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.__Canon[]>
-;* V13 tmp4         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-;  V14 tmp5         [V14,T12] (  2,  2   )    long  ->  x21         "field V13.m_pStringHeap (fldOffset=0x0)" P-INDEP
-;  V15 tmp6         [V15,T13] (  2,  2   )     int  ->  x22         "field V13.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-;  V16 rat0         [V16,T10] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V17 rat1         [V17,T04] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp2         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
+;  V12 tmp3         [V12,T12] (  2,  2   )    long  ->  x21         "field V11.m_pStringHeap (fldOffset=0x0)" P-INDEP
+;  V13 tmp4         [V13,T13] (  2,  2   )     int  ->  x22         "field V11.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+;  V14 tmp5         [V14,T11] (  2,  4   )    long  ->   x0         "argument with side effect"
+;  V15 rat0         [V15,T09] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V16 rat1         [V16,T10] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V17 rat2         [V17,T02] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -192,38 +192,26 @@ G_M19047_IG13:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             ldr     x0, [x19]
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M19047_IG15
+            ldr     x2, [x1, #0x18]
+            cbz     x2, G_M19047_IG15
                       ;; size=20 bbWeight=1 PerfScore 13.00
 G_M19047_IG14:        ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x2
             b       G_M19047_IG16
-                     ;; size=4 bbWeight=0.80 PerfScore 0.80
+                        ;; size=8 bbWeight=0.80 PerfScore 1.20
 G_M19047_IG15:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            mov     x1, x0
-                       ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x21
-            ; gcrRegs +[x0]
-            cbz     x0, G_M19047_IG19
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19047_IG17:        ; bbWeight=0.25, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            cmp     x2, x1
-            beq     G_M19047_IG19
-                       ;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M19047_IG18:        ; bbWeight=0.12, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x1
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
+                       ;; size=16 bbWeight=0.20 PerfScore 0.50
+G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             mov     x1, x21
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1 x21] +[x0]
-                       ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M19047_IG19:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+                     ;; size=8 bbWeight=1 PerfScore 1.50
+G_M19047_IG17:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
@@ -239,7 +227,7 @@ RWD00   dd  G_M19047_IG05 - G_M19047_IG02
            dd  G_M19047_IG10 - G_M19047_IG02
 
 
-; Total bytes of code 532, prolog size 24, PerfScore 81.02, instruction count 133, allocated bytes for code 532 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
+; Total bytes of code 508, prolog size 24, PerfScore 79.95, instruction count 127, allocated bytes for code 508 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -250,7 +238,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 133 (0x00085) Actual length = 532 (0x000214)
+  Function Length   : 127 (0x0007f) Actual length = 508 (0x0001fc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-20 (-3.70%) : 5633.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object
@@ -10,23 +10,21 @@
 ;
 ;  V00 arg0         [V00,T00] (  9,  6   )     ref  ->  x19         class-hnd single-def <System.RuntimeType>
 ;  V01 arg1         [V01,T01] (  8,  5   )     int  ->  x20         single-def
-;* V02 loc0         [V02,T12] (  0,  0   )   ubyte  ->  zero-ref   
-;  V03 loc1         [V03,T06] (  3,  2   )   ubyte  ->  x21        
+;* V02 loc0         [V02,T11] (  0,  0   )   ubyte  ->  zero-ref   
+;  V03 loc1         [V03,T04] (  3,  2   )   ubyte  ->  x21        
 ;* V04 loc2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Object[]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T05] (  3,  2.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T13] (  3,  1.25)    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T03] (  5,  3.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.Object[]>
-;  V09 tmp4         [V09,T07] (  3,  1.50)     ref  ->   x0        
-;  V10 tmp5         [V10,T08] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-;  V11 tmp6         [V11,T04] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V12 tmp7         [V12,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
-;* V13 tmp8         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
-;* V14 tmp9         [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V15 tmp10        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V16 tmp11        [V16,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
-;  V17 cse0         [V17,T10] (  3,  1.50)    long  ->   x0         "CSE - moderate"
-;  V18 cse1         [V18,T09] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V06 tmp1         [V06,T06] (  3,  1.50)     ref  ->   x0        
+;  V07 tmp2         [V07,T07] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+;  V08 tmp3         [V08,T03] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V09 tmp4         [V09,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+;* V10 tmp5         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
+;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;* V12 tmp7         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;  V13 tmp8         [V13,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
+;  V14 tmp9         [V14,T05] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V15 cse0         [V15,T09] (  3,  1.50)    long  ->   x0         "CSE - moderate"
+;  V16 cse1         [V16,T08] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
 ;
 ; Lcl frame size = 8
 
@@ -94,7 +92,7 @@ G_M32569_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             b       G_M32569_IG07
@@ -105,16 +103,18 @@ G_M32569_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #54
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x0, [x1]
             ; gcrRegs +[x0]
+            ; byrRegs -[x0]
                        ;; size=36 bbWeight=0.50 PerfScore 3.75
 G_M32569_IG07:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                      ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
@@ -124,10 +124,10 @@ G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs -[x19] +[x0]
             ; gcr arg pop 0
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=32 bbWeight=0.50 PerfScore 3.00
 G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
@@ -135,18 +135,20 @@ G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #55
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             ldr     x0, [x0]
             ; gcrRegs +[x0]
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=40 bbWeight=0.50 PerfScore 4.25
 G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
-            cbz     w20, G_M32569_IG14
+            cbz     w20, G_M32569_IG11
             mov     x0, x19
             ; gcrRegs +[x0]
             mov     w1, w20
@@ -159,43 +161,32 @@ G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            cbz     x0, G_M32569_IG13
-                       ;; size=40 bbWeight=0.50 PerfScore 4.50
-G_M32569_IG11:        ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #0xD1FFAB1E LSL #32
-            cmp     x2, x3
-            beq     G_M32569_IG13
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M32569_IG12:        ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            mov     x0, x3
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-                      ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            b       G_M32569_IG16
+                       ;; size=56 bbWeight=0.50 PerfScore 5.75
+G_M32569_IG11:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
             ldr     x0, [x19, #0x10]
-            cbz     x0, G_M32569_IG16
+            cbz     x0, G_M32569_IG13
             bl      <unknown method>
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
             ; gcrRegs +[x20]
-            cbz     x20, G_M32569_IG16
+            cbz     x20, G_M32569_IG13
             ldr     x0, [x20]
             ; gcrRegs -[x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            beq     G_M32569_IG15
+            beq     G_M32569_IG12
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -209,10 +200,10 @@ G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcrRegs -[x0 x19]
             ; gcr arg pop 0
                        ;; size=80 bbWeight=0.50 PerfScore 10.00
-G_M32569_IG15:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG17
+G_M32569_IG12:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M32569_IG14
                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20] +[x19]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -226,7 +217,7 @@ G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             mov     x20, x0
             ; gcrRegs +[x20]
                        ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -236,14 +227,14 @@ G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             ldr     x1, [x1]
             ldr     wzr, [x0]
                        ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M32569_IG18:        ; bbWeight=0.50, epilog, nogc, extend
+G_M32569_IG15:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x1
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x20]
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
@@ -251,7 +242,7 @@ G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
 
-; Total bytes of code 540, prolog size 24, PerfScore 64.94, instruction count 135, allocated bytes for code 540 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
+; Total bytes of code 520, prolog size 24, PerfScore 64.00, instruction count 130, allocated bytes for code 520 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -262,7 +253,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 135 (0x00087) Actual length = 540 (0x00021c)
+  Function Length   : 130 (0x00082) Actual length = 520 (0x000208)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-16 (-3.36%) : 9165.dasm - BenchmarksGame.Mandelbrot_2:DoBench(int,System.IO.MemoryStream,ubyte) (Tier1-OSR)
@@ -9,98 +9,99 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T07] (  5, 14   )     int  ->  x19         single-def
-;  V01 arg1         [V01,T08] (  8, 11   )     ref  ->  x20         class-hnd single-def <System.IO.MemoryStream>
-;  V02 arg2         [V02,T10] (  3,  3   )   ubyte  ->  x21         single-def
-;  V03 loc0         [V03,T09] (  2, 10   )     int  ->  x24        
-;  V04 loc1         [V04,T12] (  1,  2   )     int  ->  x25        
-;  V05 loc2         [V05,T18] (  1, 64   )  double  ->   d9        
-;  V06 loc3         [V06,T06] (  4, 26   )     int  ->  x23        
+;  V00 arg0         [V00    ] (  5, 14   )     int  ->  [fp+0xFC]  do-not-enreg[X] addr-exposed single-def tier0-frame
+;  V01 arg1         [V01,T07] (  8, 11   )     ref  ->  x19         class-hnd single-def <System.IO.MemoryStream>
+;  V02 arg2         [V02,T08] (  3,  3   )   ubyte  ->  x20         single-def
+;  V03 loc0         [V03    ] (  2, 10   )     int  ->  [fp+0xE8]  do-not-enreg[X] addr-exposed tier0-frame
+;  V04 loc1         [V04,T10] (  1,  2   )     int  ->  x23        
+;  V05 loc2         [V05,T16] (  1, 64   )  double  ->   d9        
+;  V06 loc3         [V06,T06] (  4, 26   )     int  ->  x22        
 ;  V07 loc4         [V07,T04] (  8, 28   )     int  ->   x4        
 ;  V08 loc5         [V08,T02] (  7, 38   )     int  ->   x3        
-;  V09 loc6         [V09,T16] (  2, 66   )  double  ->   d8        
-;  V10 loc7         [V10,T05] (  5, 28   )     int  ->  x22        
-;  V11 loc8         [V11,T13] (  8,450   )  double  ->  d16        
-;  V12 loc9         [V12,T14] (  7,386   )  double  ->  d17        
-;  V13 loc10        [V13,T17] (  2, 66   )  double  ->  d18        
+;  V09 loc6         [V09,T14] (  2, 66   )  double  ->   d8        
+;  V10 loc7         [V10,T05] (  5, 28   )     int  ->  x21        
+;  V11 loc8         [V11,T11] (  8,450   )  double  ->  d16        
+;  V12 loc9         [V12,T12] (  7,386   )  double  ->  d17        
+;  V13 loc10        [V13,T15] (  2, 66   )  double  ->  d18        
 ;  V14 loc11        [V14,T01] (  4, 50   )     int  ->   x2        
-;  V15 loc12        [V15,T15] (  2,128   )  double  ->  d19        
+;  V15 loc12        [V15,T13] (  2,128   )  double  ->  d19        
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V17 tmp1         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <<unknown class>>
-;* V18 tmp2         [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <<unknown class>>
-;  V19 tmp3         [V19,T00] (  2, 64   )     int  ->   x2         "dup spill"
-;  V20 tmp4         [V20,T03] (  2, 32   )     int  ->   x3         "dup spill"
-;  V21 tmp5         [V21,T11] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V17 tmp1         [V17,T00] (  2, 64   )     int  ->   x2         "dup spill"
+;  V18 tmp2         [V18,T03] (  2, 32   )     int  ->   x3         "dup spill"
+;* V19 tmp3         [V19    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
+;* V20 tmp4         [V20    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
+;  V21 tmp5         [V21,T09] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
 ;
 ; Lcl frame size = 8
 
 G_M48919_IG01:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x60]!
+            stp     fp, lr, [sp, #-0x50]!
             stp     d8, d9, [sp, #0x18]
             stp     x19, x20, [sp, #0x28]
             stp     x21, x22, [sp, #0x38]
-            stp     x23, x24, [sp, #0x48]
-            str     x25, [sp, #0x58]
+            str     x23, [sp, #0x48]
             mov     fp, sp
-            ldr     w19, [fp, #0xD1FFAB1E]
-            ldr     x20, [fp, #0xD1FFAB1E]
-            ; gcrRegs +[x20]
-            ldp     w24, w21, [fp, #0xF8]
-            ldr     w25, [fp, #0xF4]
-            ldr     d9, [fp, #0xE8]
-            ldp     w4, w23, [fp, #0xE0]
-            ldr     w3, [fp, #0xDC]
-            ldr     d8, [fp, #0xD0]
-            ldr     w22, [fp, #0xCC]
-            ldp     d17, d16, [fp, #0xB8]
-            ldr     d18, [fp, #0xB0]
-            ldr     w2, [fp, #0xAC]
-                       ;; size=76 bbWeight=0.01 PerfScore 0.31
-G_M48919_IG02:        ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M48919_IG11
+            ldr     x19, [fp, #0xF0]
+            ; gcrRegs +[x19]
+            ldr     w20, [fp, #0xEC]
+            ldr     w23, [fp, #0xE4]
+            ldr     d9, [fp, #0xD8]
+            ldp     w4, w22, [fp, #0xD0]
+            ldr     w3, [fp, #0xCC]
+            ldr     d8, [fp, #0xC0]
+            ldr     w21, [fp, #0xBC]
+            ldp     d17, d16, [fp, #0xA8]
+            ldr     d18, [fp, #0xA0]
+            ldr     w2, [fp, #0x9C]
+                       ;; size=68 bbWeight=0.01 PerfScore 0.28
+G_M48919_IG02:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            b       G_M48919_IG10
                       ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M48919_IG03:        ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M48919_IG03:        ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             mov     w4, wzr
             mov     w3, wzr
-            scvtf   d16, w23
+            scvtf   d16, w22
             fmov    d17, #2.0000
             fmul    d16, d16, d17
-            scvtf   d17, w24
+            ldr     w0, [fp, #0xE8]   // [V03 loc0]
+            scvtf   d17, w0
             fdiv    d16, d16, d17
             fmov    d17, #1.0000
             fsub    d8, d16, d17
-            mov     w22, wzr
-            cmp     w19, #0
-            bgt     G_M48919_IG10
-                       ;; size=48 bbWeight=2 PerfScore 64.00
-G_M48919_IG04:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            mov     w21, wzr
+            ldr     w0, [fp, #0xFC]    // [V00 arg0]
+            cmp     w0, #0
+            bgt     G_M48919_IG09
+                       ;; size=56 bbWeight=2 PerfScore 72.00
+G_M48919_IG04:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             cbz     w3, G_M48919_IG06
                        ;; size=4 bbWeight=8 PerfScore 8.00
-G_M48919_IG05:        ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M48919_IG05:        ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             neg     w1, w3
             add     w1, w1, #8
             lsl     w1, w4, w1
             eor     w1, w1, #255
             uxtb    w1, w1
-            mov     x0, x20
+            mov     x0, x19
             ; gcrRegs +[x0]
-            ldr     x2, [x20]
+            ldr     x2, [x19]
             ldr     x2, [x2, #0x70]
             ldr     x2, [x2]
             blr     x2
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=40 bbWeight=2 PerfScore 26.00
-G_M48919_IG06:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            add     w23, w23, #1
-            cmp     w23, w24
+G_M48919_IG06:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            add     w22, w22, #1
+            ldr     w0, [fp, #0xE8]    // [V03 loc0]
+            cmp     w22, w0
             blt     G_M48919_IG03
-                     ;; size=12 bbWeight=8 PerfScore 16.00
-G_M48919_IG07:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            tst     w21, #255
-            beq     G_M48919_IG17
+                        ;; size=16 bbWeight=8 PerfScore 32.00
+G_M48919_IG07:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            tst     w20, #255
+            beq     G_M48919_IG16
                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M48919_IG08:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M48919_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ConsolePal:OpenStandardOutput():System.IO.Stream
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -110,37 +111,31 @@ G_M48919_IG08:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x0, x20
-            ldr     x2, [x20]
+            mov     x0, x19
+            ldr     x2, [x19]
             ldr     x2, [x2, #0x70]
             ldr     x2, [x2, #0x38]
-                      ;; size=40 bbWeight=0.50 PerfScore 7.75
-G_M48919_IG09:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x25, [sp, #0x58]
-            ldp     x23, x24, [sp, #0x48]
-            ldp     x21, x22, [sp, #0x38]
-            ldp     x19, x20, [sp, #0x28]
-            ldp     d8, d9, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x60
-            add     sp, sp, #176
-            br      x2
+            blr     x2
+            ; gcrRegs -[x0-x1 x19]
             ; gcr arg pop 0
-                        ;; size=32 bbWeight=0.50 PerfScore 4.25
-G_M48919_IG10:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x0-x1]
+            b       G_M48919_IG16
+                       ;; size=48 bbWeight=0.50 PerfScore 8.75
+G_M48919_IG09:        ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[x19]
             movi    v16.16b, #0
             movi    v17.16b, #0
-            scvtf   d18, w22
+            scvtf   d18, w21
             fmov    d19, #2.0000
             fmul    d18, d18, d19
-            scvtf   d19, w19
+            ldr     w1, [fp, #0xFC]   // [V00 arg0]
+            scvtf   d19, w1
             fdiv    d18, d18, d19
             fmov    d19, #1.5000
             fsub    d18, d18, d19
-            sxtw    w2, w25
+            sxtw    w2, w23
             lsl     w4, w4, #1
-                        ;; size=44 bbWeight=2 PerfScore 63.00
-G_M48919_IG11:        ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+                       ;; size=48 bbWeight=2 PerfScore 67.00
+G_M48919_IG10:        ; bbWeight=64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             fmul    d19, d16, d16
             fmul    d20, d17, d17
             fsub    d19, d19, d20
@@ -153,28 +148,28 @@ G_M48919_IG11:        ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0000 {},
             fmul    d20, d17, d17
             fadd    d19, d19, d20
             fcmp    d19, d9
-            ble     G_M48919_IG13
+            ble     G_M48919_IG12
                       ;; size=52 bbWeight=64 PerfScore 2080.00
-G_M48919_IG12:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M48919_IG11:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             orr     w4, w4, #1
-            b       G_M48919_IG14
+            b       G_M48919_IG13
                      ;; size=8 bbWeight=8 PerfScore 12.00
-G_M48919_IG13:        ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M48919_IG12:        ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             sub     w2, w2, #1
             cmp     w2, #0
-            bgt     G_M48919_IG11
+            bgt     G_M48919_IG10
                        ;; size=12 bbWeight=16 PerfScore 32.00
-G_M48919_IG14:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M48919_IG13:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             add     w3, w3, #1
             cmp     w3, #8
-            bne     G_M48919_IG16
+            bne     G_M48919_IG15
                        ;; size=12 bbWeight=8 PerfScore 16.00
-G_M48919_IG15:        ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M48919_IG14:        ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             eor     w1, w4, #255
             uxtb    w1, w1
-            mov     x0, x20
+            mov     x0, x19
             ; gcrRegs +[x0]
-            ldr     x2, [x20]
+            ldr     x2, [x19]
             ldr     x2, [x2, #0x70]
             ldr     x2, [x2]
             blr     x2
@@ -183,52 +178,49 @@ G_M48919_IG15:        ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
             mov     w4, wzr
             mov     w3, wzr
...
  
+24 (+5.45%) : 5971.dasm - System.Linq.Enumerable:ConcatSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,7 +8,7 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  9,  5.56)    long  ->  x19         single-def
+;  V00 TypeCtx      [V00,T00] ( 11,  6.16)    long  ->  x19         single-def
 ;  V01 arg0         [V01,T01] (  7,  5.50)     ref  ->  x20         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
 ;  V02 arg1         [V02,T02] (  7,  5   )     ref  ->  x21         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
 ;  V03 loc0         [V03,T12] (  4,  2   )     ref  ->   x0         class-hnd single-def <System.Linq.Enumerable+ConcatIterator`1[System.__Canon]>
@@ -19,26 +19,27 @@
 ;  V08 tmp4         [V08,T04] (  5,  5   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+Concat2Iterator`1[System.__Canon]>
 ;* V09 tmp5         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V10 tmp6         [V10,T06] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V11 tmp7         [V11,T15] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V12 tmp8         [V12,T16] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V13 cse0         [V13,T09] (  3,  2.50)    long  ->  x22         "CSE - aggressive"
-;  V14 rat0         [V14,T05] (  3,  4   )    long  ->  x22         "runtime lookup"
-;  V15 rat1         [V15,T03] (  3,  5.60)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;  V16 rat2         [V16,T13] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V17 rat3         [V17,T07] (  3,  2.80)    long  ->   x0         "spilling expr"
-;  V18 rat4         [V18,T10] (  3,  2.24)    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V19 rat5         [V19,T14] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V20 rat6         [V20,T08] (  3,  2.80)    long  ->   x0         "spilling expr"
-;  V21 rat7         [V21,T11] (  3,  2.24)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V11 tmp7         [V11,T16] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V12 tmp8         [V12,T17] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V13 rat0         [V13,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V14 rat1         [V14,T03] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V15 rat2         [V15,T13] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V16 rat3         [V16,T07] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V17 rat4         [V17,T14] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V18 rat5         [V18,T08] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V19 rat6         [V19,T10] (  3,  2.24)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V20 rat7         [V20,T15] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V21 rat8         [V21,T09] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V22 rat9         [V22,T11] (  3,  2.24)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M54395_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x20]
-            stp     x21, x22, [sp, #0x30]
+            stp     fp, lr, [sp, #-0x30]!
+            stp     x19, x20, [sp, #0x18]
+            str     x21, [sp, #0x28]
             mov     fp, sp
-            str     x0, [fp, #0x18]
+            str     x0, [fp, #0x10]
             mov     x19, x0
             mov     x20, x1
             ; gcrRegs +[x20]
@@ -46,11 +47,11 @@ G_M54395_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x21]
                        ;; size=32 bbWeight=1 PerfScore 6.00
 G_M54395_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
-            cbz     x20, G_M54395_IG22
-            cbz     x21, G_M54395_IG23
+            cbz     x20, G_M54395_IG25
+            cbz     x21, G_M54395_IG26
             ldr     x0, [x19, #0x38]
-            ldr     x22, [x0, #0x10]
-            cbz     x22, G_M54395_IG04
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M54395_IG04
                       ;; size=20 bbWeight=1 PerfScore 9.00
 G_M54395_IG03:        ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
             b       G_M54395_IG05
@@ -60,11 +61,9 @@ G_M54395_IG04:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=000
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x22, x0
-                       ;; size=24 bbWeight=0.20 PerfScore 0.70
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
 G_M54395_IG05:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x22
             mov     x1, x20
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for System.Linq.Enumerable:IsEmptyArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte
@@ -74,21 +73,35 @@ G_M54395_IG05:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
             blr     x2
             ; gcrRegs -[x1]
             cbz     w0, G_M54395_IG08
-                        ;; size=32 bbWeight=1 PerfScore 7.50
+                      ;; size=28 bbWeight=1 PerfScore 7.00
 G_M54395_IG06:        ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20]
             mov     x0, x21
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=0.50 PerfScore 0.25
 G_M54395_IG07:        ; bbWeight=0.50, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x40
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x30
             ret     lr
-                        ;; size=16 bbWeight=0.50 PerfScore 2.00
+                       ;; size=16 bbWeight=0.50 PerfScore 2.50
 G_M54395_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0] +[x20]
-            mov     x0, x22
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M54395_IG10
+                       ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M54395_IG09:        ; bbWeight=0.40, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            b       G_M54395_IG11
+                       ;; size=4 bbWeight=0.40 PerfScore 0.40
+G_M54395_IG10:        ; bbWeight=0.10, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.10 PerfScore 0.30
+G_M54395_IG11:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
             mov     x1, x21
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for System.Linq.Enumerable:IsEmptyArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte
@@ -97,65 +110,65 @@ G_M54395_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=300
             ldr     x2, [x2]
             blr     x2
             ; gcrRegs -[x1]
-            cbz     w0, G_M54395_IG10
+            cbz     w0, G_M54395_IG13
             mov     x0, x20
             ; gcrRegs +[x0]
-                      ;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M54395_IG09:        ; bbWeight=0.50, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x40
+                      ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M54395_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x30
             ret     lr
-                        ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M54395_IG10:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+                     ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M54395_IG13:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0]
             ldr     x0, [x19, #0x38]
             ldr     x1, [x0, #0x08]
             cmp     x1, #24
-            ble     G_M54395_IG13
+            ble     G_M54395_IG16
                       ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M54395_IG11:        ; bbWeight=0.40, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M54395_IG14:        ; bbWeight=0.40, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x0, #0x18]
-            cbz     x0, G_M54395_IG13
+            cbz     x0, G_M54395_IG16
                         ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M54395_IG12:        ; bbWeight=0.32, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
-            b       G_M54395_IG14
+G_M54395_IG15:        ; bbWeight=0.32, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            b       G_M54395_IG17
                       ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M54395_IG13:        ; bbWeight=0.18, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M54395_IG16:        ; bbWeight=0.18, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.18 PerfScore 0.54
-G_M54395_IG14:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M54395_IG17:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
             mov     x1, x20
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
+            bl      CORINFO_HELP_ISINSTANCEOFARRAY
             ; gcrRegs -[x1] +[x0]
-            cbnz    x0, G_M54395_IG20
+            cbnz    x0, G_M54395_IG23
             ldr     x0, [x19, #0x38]
             ; gcrRegs -[x0]
             ldr     x1, [x0, #0x08]
             cmp     x1, #32
-            ble     G_M54395_IG17
+            ble     G_M54395_IG20
                       ;; size=28 bbWeight=0.50 PerfScore 5.00
-G_M54395_IG15:        ; bbWeight=0.40, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M54395_IG18:        ; bbWeight=0.40, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x0, #0x20]
-            cbz     x0, G_M54395_IG17
+            cbz     x0, G_M54395_IG20
                         ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M54395_IG16:        ; bbWeight=0.32, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
-            b       G_M54395_IG18
+G_M54395_IG19:        ; bbWeight=0.32, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            b       G_M54395_IG21
                       ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M54395_IG17:        ; bbWeight=0.18, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M54395_IG20:        ; bbWeight=0.18, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.18 PerfScore 0.54
-G_M54395_IG18:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M54395_IG21:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             mov     x19, x0
             ; gcrRegs +[x19]
@@ -179,13 +192,13 @@ G_M54395_IG18:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=000
             mov     x0, x19
             ; gcrRegs +[x0]
                        ;; size=44 bbWeight=0.50 PerfScore 4.00
-G_M54395_IG19:        ; bbWeight=0.50, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x40
+G_M54395_IG22:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x30
             ret     lr
-                        ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M54395_IG20:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
+                       ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M54395_IG23:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x19] +[x21]
             mov     x1, x21
             ; gcrRegs +[x1]
@@ -193,13 +206,13 @@ G_M54395_IG20:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200
             ldr     x2, [x2, #0x58]
             ldr     x2, [x2, #0x10]
                        ;; size=16 bbWeight=0.50 PerfScore 4.75
-G_M54395_IG21:        ; bbWeight=0.50, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x40
+G_M54395_IG24:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x30
...
  
+40 (+15.38%) : 9129.dasm - System.Array:IndexOfSystem.__Canon:int (Tier1)
@@ -8,11 +8,11 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T02] (  5,  4.36)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )     ref  ->  x19         class-hnd single-def <System.__Canon[]>
-;  V02 arg1         [V02,T06] (  3,  3   )     ref  ->  x22         ld-addr-op class-hnd single-def <System.__Canon>
-;  V03 arg2         [V03,T01] (  5,  5   )     int  ->  x20         single-def
-;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x21         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )     ref  ->  x20         class-hnd single-def <System.__Canon[]>
+;  V02 arg1         [V02,T07] (  3,  3   )     ref  ->  x23         ld-addr-op class-hnd single-def <System.__Canon>
+;  V03 arg2         [V03,T02] (  5,  5   )     int  ->  x21         single-def
+;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x22         single-def
 ;* V05 loc0         [V05    ] (  0,  0   )     int  ->  zero-ref   
 ;* V06 loc1         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;* V07 loc2         [V07    ] (  0,  0   )     int  ->  zero-ref   
@@ -24,80 +24,96 @@
 ;* V13 tmp4         [V13    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V15 tmp6         [V15,T04] (  3,  6   )     ref  ->   x0         single-def "argument with side effect"
-;  V16 cse0         [V16,T09] (  3,  3   )     int  ->   x1         "CSE - aggressive"
-;  V17 rat0         [V17,T08] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V18 rat1         [V18,T05] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V19 rat2         [V19,T07] (  3,  4.48)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V16 cse0         [V16,T10] (  3,  3   )     int  ->   x0         "CSE - aggressive"
+;* V17 rat0         [V17,T11] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V18 rat1         [V18,T05] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat2         [V19,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat3         [V20,T06] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V21 rat4         [V21,T08] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M13831_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x20]
-            stp     x21, x22, [sp, #0x30]
+            stp     x19, x20, [sp, #0x18]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x19, x1
-            ; gcrRegs +[x19]
-            mov     x22, x2
-            ; gcrRegs +[x22]
-            mov     w20, w3
-            mov     w21, w4
-                       ;; size=36 bbWeight=1 PerfScore 6.50
-G_M13831_IG02:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M13831_IG08
-            ldr     w1, [x19, #0x08]
-            cmp     w1, w20
-            blo     G_M13831_IG09
-            sub     w1, w1, w20
-            cmp     w1, w21
-            blo     G_M13831_IG10
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M13831_IG05
-                       ;; size=44 bbWeight=1 PerfScore 15.00
-G_M13831_IG03:        ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M13831_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M13831_IG04:        ; bbWeight=0.64, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            b       G_M13831_IG06
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M13831_IG05:        ; bbWeight=0.36, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     x23, x2
+            ; gcrRegs +[x23]
+            mov     w21, w3
+            mov     w22, w4
+                       ;; size=44 bbWeight=1 PerfScore 8.00
+G_M13831_IG02:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M13831_IG10
+            ldr     w0, [x20, #0x08]
+            cmp     w0, w21
+            blo     G_M13831_IG11
+            sub     w0, w0, w21
+            cmp     w0, w22
+            blo     G_M13831_IG12
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M13831_IG04
+                       ;; size=40 bbWeight=1 PerfScore 14.50
+G_M13831_IG03:        ; bbWeight=0.20, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x1, x0
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M13831_IG04:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M13831_IG07
+                       ;; size=16 bbWeight=1 PerfScore 7.50
+G_M13831_IG05:        ; bbWeight=0.80, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M13831_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M13831_IG06:        ; bbWeight=0.64, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            b       G_M13831_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M13831_IG07:        ; bbWeight=0.36, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M13831_IG06:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x1
+G_M13831_IG08:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E      // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs +[x0]
-            mov     x1, x19
+            mov     x1, x20
             ; gcrRegs +[x1]
-            mov     x2, x22
+            mov     x2, x23
             ; gcrRegs +[x2]
-            mov     w3, w20
-            mov     w4, w21
+            mov     w3, w21
+            mov     w4, w22
             ldr     x5, [x0]
             ldr     x5, [x5, #0x50]
             ldr     x5, [x5]
             blr     x5
-            ; gcrRegs -[x0-x2 x19 x22]
-                       ;; size=56 bbWeight=1 PerfScore 18.00
-G_M13831_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
+            ; gcrRegs -[x0-x2 x20 x23]
+                       ;; size=52 bbWeight=1 PerfScore 17.50
+G_M13831_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 4.00
-G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                      ;; size=20 bbWeight=1 PerfScore 6.00
+G_M13831_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             mov     w0, #2
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -106,7 +122,7 @@ G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             blr     x1
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_IndexMustBeLessOrEqual()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -114,7 +130,7 @@ G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -123,7 +139,7 @@ G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 260, prolog size 20, PerfScore 48.42, instruction count 65, allocated bytes for code 260 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
+; Total bytes of code 300, prolog size 24, PerfScore 59.02, instruction count 75, allocated bytes for code 300 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +150,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 65 (0x00041) Actual length = 260 (0x000104)
+  Function Length   : 75 (0x0004b) Actual length = 300 (0x00012c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,10 +158,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
-    E4          end
-    E4          end
 
  
+48 (+36.36%) : 1599.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -8,84 +8,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  3,  2.50)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T00] (  5,  3.60)    long  ->   x1         single-def
-;  V02 arg1         [V02,T01] (  4,  3.50)   byref  ->  x19         single-def
+;  V00 this         [V00,T03] (  3,  2.50)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  4.28)    long  ->  x19         single-def
+;  V02 arg1         [V02,T01] (  4,  3.50)   byref  ->  x20         single-def
 ;  V03 loc0         [V03,T02] (  7,  5   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T04] (  4,  4   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T04] (  4,  4   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  2   )    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  1.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG04:        ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.40, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M58319_IG05:        ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.10, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M58319_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.50 PerfScore 5.50
+G_M58319_IG07:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.40 PerfScore 1.60
+G_M58319_IG08:        ; bbWeight=0.18, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.18 PerfScore 0.54
+G_M58319_IG09:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.50 PerfScore 1.75
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 22.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 27.59, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -96,7 +117,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -104,9 +125,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
coreclr_tests.run.linux.arm64.checked.mch
-28 (-10.61%) : 12.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
@@ -10,120 +10,103 @@
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V01 tmp1         [V01,T00] (  8, 16   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V02 tmp2         [V02,T01] (  8, 16   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V03 tmp3         [V03,T02] (  8, 16   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V04 cse0         [V04,T03] (  4,  4   )    long  ->  x19         "CSE - aggressive"
-;  V05 cse1         [V05,T04] (  4,  4   )    long  ->  x21         "CSE - aggressive"
+;  V02 tmp2         [V02,T01] (  6, 12   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
+;  V03 tmp3         [V03,T02] (  6, 12   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
+;  V04 cse0         [V04,T03] (  4,  4   )     ref  ->  x19         "CSE - aggressive"
+;  V05 cse1         [V05,T04] (  4,  4   )   byref  ->  x21         "CSE - aggressive"
+;  V06 cse2         [V06,T05] (  4,  4   )   byref  ->  x22         "CSE - aggressive"
+;  V07 cse3         [V07,T06] (  4,  4   )    long  ->  x23         "CSE - aggressive"
 ;
 ; Lcl frame size = 8
 
 G_M2338_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
+            stp     fp, lr, [sp, #-0x40]!
             stp     x19, x20, [sp, #0x18]
-            str     x21, [sp, #0x28]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-                       ;; size=16 bbWeight=1 PerfScore 3.50
+                      ;; size=20 bbWeight=1 PerfScore 4.50
 G_M2338_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            movz    x19, #0xD1FFAB1E
-            movk    x19, #0xD1FFAB1E LSL #16
-            movk    x19, #0xD1FFAB1E LSL #32
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
-            ; gcrRegs +[x0]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            str     xzr, [x20, #0x10]
-            add     x0, x20, #24
-            ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
-            strb    wzr, [x20, #0x1C]
-            mov     x0, x20
-            ; gcrRegs +[x0]
-            ; byrRegs -[x0]
-            bl      <unknown method>
-            ; gcrRegs -[x0]
-            add     x14, x20, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     xzr, [x20, #0x10]
-            movz    x21, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
-            movk    x21, #0xD1FFAB1E LSL #16
-            movk    x21, #0xD1FFAB1E LSL #32
-            mov     x14, x21
-            ; byrRegs -[x14]
-            mov     x15, x20
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x20]
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
-            ; gcrRegs +[x0]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            str     xzr, [x20, #0x10]
-            add     x0, x20, #24
-            ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
-            strb    wzr, [x20, #0x1C]
-            mov     x0, x20
-            ; gcrRegs +[x0]
-            ; byrRegs -[x0]
-            bl      <unknown method>
-            ; gcrRegs -[x0]
-            add     x14, x20, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     x15, [x20, #0x10]
-            add     x14, x21, #8
-            ; byrRegs -[x14]
-            mov     x15, x20
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x20]
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_DBLROUND
             ; gcrRegs +[x0]
             mov     x19, x0
             ; gcrRegs +[x19]
-            str     xzr, [x19, #0x10]
-            add     x0, x19, #24
+            mov     x20, x19
+            ; gcrRegs +[x20]
+            str     xzr, [x20, #0x10]
+            add     x21, x20, #24
+            ; byrRegs +[x21]
+            mov     w0, #4
             ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
+            stlr    w0, [x21]
+            strb    wzr, [x20, #0x1C]
+            mov     x0, x20
+            ; gcrRegs +[x0]
+            bl      <unknown method>
+            ; gcrRegs -[x0]
+            add     x22, x20, #29
+            ; byrRegs +[x22]
+            mov     w14, #1
+            stlrb   w14, [x22]
+            str     xzr, [x20, #0x10]
+            movz    x23, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            movk    x23, #0xD1FFAB1E LSL #16
+            movk    x23, #0xD1FFAB1E LSL #32
+            mov     x14, x23
+            mov     x15, x20
+            ; gcrRegs +[x15]
+            bl      CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[x15 x20]
+            mov     x20, x19
+            ; gcrRegs +[x20]
+            str     xzr, [x20, #0x10]
+            mov     w0, #4
+            stlr    w0, [x21]
+            strb    wzr, [x20, #0x1C]
+            mov     x0, x20
+            ; gcrRegs +[x0]
+            bl      <unknown method>
+            ; gcrRegs -[x0]
+            mov     w14, #1
+            stlrb   w14, [x22]
+            str     x14, [x20, #0x10]
+            add     x14, x23, #8
+            mov     x15, x20
+            ; gcrRegs +[x15]
+            bl      CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[x15 x20]
+            str     xzr, [x19, #0x10]
+            mov     w0, #4
+            stlr    w0, [x21]
             strb    wzr, [x19, #0x1C]
             mov     x0, x19
             ; gcrRegs +[x0]
-            ; byrRegs -[x0]
             bl      <unknown method>
             ; gcrRegs -[x0]
-            add     x14, x19, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
+            ; byrRegs -[x21]
+            mov     w14, #1
+            stlrb   w14, [x22]
             mov     x14, #2
-            ; byrRegs -[x14]
             str     x14, [x19, #0x10]
-            add     x14, x21, #16
+            add     x14, x23, #16
             mov     x15, x19
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x15 x19]
-                     ;; size=232 bbWeight=1 PerfScore 41.00
+            ; byrRegs -[x22]
+                       ;; size=196 bbWeight=1 PerfScore 35.50
 G_M2338_IG03:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=20 bbWeight=1 PerfScore 6.00
 
-; Total bytes of code 264, prolog size 16, PerfScore 49.50, instruction count 66, allocated bytes for code 264 (MethodHash=536af6dd) for method Interop+Sys+FileDescriptors:.cctor() (FullOpts)
+; Total bytes of code 236, prolog size 20, PerfScore 46.00, instruction count 59, allocated bytes for code 236 (MethodHash=536af6dd) for method Interop+Sys+FileDescriptors:.cctor() (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +117,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 66 (0x00042) Actual length = 264 (0x000108)
+  Function Length   : 59 (0x0003b) Actual length = 236 (0x0000ec)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,9 +125,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
+    E6          save_next
     C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
-    E4          end
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
 
  
-4 (-0.82%) : 399.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (FullOpts)
@@ -7,26 +7,24 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T06] (  7,  5.56)    long  ->  x20         single-def
-;  V01 arg0         [V01,T07] (  4,  4   )     ref  ->  x21         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V02 arg1         [V02,T01] (  5, 19   )     ref  ->  x19         class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
-;  V03 arg2         [V03,T08] (  4,  4   )   byref  ->  x22         single-def
-;  V04 loc0         [V04,T02] (  7, 20   )     ref  ->  [fp+0x20]  class-hnd EH-live spill-single-def <<unknown class>>
-;  V05 loc1         [V05,T03] (  3, 17   )     ref  ->  x20         class-hnd <System.__Canon>
-;  V06 loc2         [V06,T14] (  2,  2   )     ref  ->  [fp+0x18]  do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
+;  V00 TypeCtx      [V00,T05] (  7, 15.08)    long  ->  x20         single-def
+;  V01 arg0         [V01,T08] (  4,  4   )     ref  ->  x21         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V02 arg1         [V02,T03] (  5, 19   )     ref  ->  x19         class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+;  V03 arg2         [V03,T09] (  4,  4   )   byref  ->  x22         single-def
+;  V04 loc0         [V04,T04] (  7, 20   )     ref  ->  [fp+0x20]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V05 loc1         [V05,T06] (  3, 17   )     ref  ->  x23         class-hnd <System.__Canon>
+;  V06 loc2         [V06,T12] (  2,  2   )     ref  ->  [fp+0x18]  do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
 ;* V07 loc3         [V07    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd <System.__Canon>
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T09] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T10] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V12 tmp4         [V12,T00] (  3, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V13 PSPSym       [V13,T15] (  1,  1   )    long  ->  [fp+0x30]  do-not-enreg[V] "PSPSym"
-;  V14 cse0         [V14,T05] (  2,  9   )    long  ->  x23         hoist "CSE - aggressive"
-;  V15 cse1         [V15,T04] (  6, 13   )    long  ->  x21         multi-def "CSE - aggressive"
-;  V16 rat0         [V16,T10] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V17 rat1         [V17,T13] (  3,  4   )    long  ->  x23         "runtime lookup"
-;  V18 rat2         [V18,T11] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V19 rat3         [V19,T12] (  3,  4.48)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V12 tmp4         [V12,T00] (  4, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V13 PSPSym       [V13,T13] (  1,  1   )    long  ->  [fp+0x30]  do-not-enreg[V] "PSPSym"
+;  V14 cse0         [V14,T07] (  6, 13   )    long  ->  x21         multi-def "CSE - aggressive"
+;  V15 rat0         [V15,T11] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V16 rat1         [V16,T01] (  3, 44.80)    long  ->   x0         "spilling expr"
+;  V17 rat2         [V17,T02] (  3, 35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -47,10 +45,10 @@ G_M62024_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             mov     x22, x3
             ; byrRegs +[x22]
                        ;; size=48 bbWeight=1 PerfScore 9.00
-G_M62024_IG02:        ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz
-            ; GC ptr vars +{V06 V14}
-            cbz     x21, G_M62024_IG20
-            cbz     x19, G_M62024_IG21
+G_M62024_IG02:        ; bbWeight=1, gcVars=0000000000001000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz
+            ; GC ptr vars +{V06 V12}
+            cbz     x21, G_M62024_IG21
+            cbz     x19, G_M62024_IG22
             ldr     x0, [x20, #0x38]
             ldr     x11, [x0, #0x10]
             cbz     x11, G_M62024_IG04
@@ -63,7 +61,7 @@ G_M62024_IG04:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=400
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0.20 PerfScore 0.70
@@ -77,8 +75,8 @@ G_M62024_IG05:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000
             str     x0, [fp, #0x20]    // [V04 loc0]
             ; GC ptr vars +{V04}
                        ;; size=16 bbWeight=1 PerfScore 5.50
-G_M62024_IG06:        ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz
-            ; GC ptr vars -{V14}
+G_M62024_IG06:        ; bbWeight=1, gcVars=0000000000001010 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz
+            ; GC ptr vars -{V12}
             movz    x21, #24
             movk    x21, #0xD1FFAB1E LSL #16
             movk    x21, #0xD1FFAB1E LSL #32
@@ -87,67 +85,68 @@ G_M62024_IG06:        ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M62024_IG13
+            cbz     w0, G_M62024_IG14
+                       ;; size=28 bbWeight=1 PerfScore 7.00
+G_M62024_IG07:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
             ldr     x0, [x20, #0x38]
             ldr     x1, [x0, #0x08]
             cmp     x1, #24
-            ble     G_M62024_IG09
-                       ;; size=44 bbWeight=1 PerfScore 14.50
-G_M62024_IG07:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
-            ldr     x23, [x0, #0x18]
-            cbz     x23, G_M62024_IG09
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M62024_IG08:        ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
-            b       G_M62024_IG10
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M62024_IG09:        ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+            ble     G_M62024_IG10
+                       ;; size=16 bbWeight=8 PerfScore 60.00
+G_M62024_IG08:        ; bbWeight=6.40, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+            ldr     x11, [x0, #0x18]
+            cbz     x11, G_M62024_IG10
+                       ;; size=8 bbWeight=6.40 PerfScore 25.60
+G_M62024_IG09:        ; bbWeight=5.12, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+            b       G_M62024_IG11
+                       ;; size=4 bbWeight=5.12 PerfScore 5.12
+G_M62024_IG10:        ; bbWeight=2.88, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
             mov     x0, x20
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
-            mov     x23, x0
-                       ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M62024_IG10:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
-            mov     x11, x23
+            mov     x11, x0
+                       ;; size=24 bbWeight=2.88 PerfScore 10.08
+G_M62024_IG11:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
             ldr     x0, [fp, #0x20]   // [V04 loc0]
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
             ; gcr arg pop 0
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x1, x20
+            mov     x23, x0
+            ; gcrRegs +[x23]
+            mov     x1, x23
             ; gcrRegs +[x1]
             ldr     x0, [x19, #0x08]
             ldr     x2, [x19, #0x18]
             blr     x2
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
-            cbnz    w0, G_M62024_IG12
+            cbnz    w0, G_M62024_IG13
             ldr     x0, [fp, #0x20]   // [V04 loc0]
             ; gcrRegs +[x0]
             mov     x11, x21
             ldr     x1, [x11]
             blr     x1
-            ; gcrRegs -[x0 x20]
+            ; gcrRegs -[x0 x23]
             ; gcr arg pop 0
-            cbnz    w0, G_M62024_IG10
-                       ;; size=60 bbWeight=8 PerfScore 184.00
-G_M62024_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+            cbnz    w0, G_M62024_IG07
+                       ;; size=56 bbWeight=8 PerfScore 180.00
+G_M62024_IG12:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
             ; gcrRegs -[x19]
-            b       G_M62024_IG13
+            b       G_M62024_IG14
                      ;; size=4 bbWeight=1 PerfScore 1.00
-G_M62024_IG12:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
-            ; gcrRegs +[x20]
+G_M62024_IG13:        ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref
+            ; gcrRegs +[x23]
             mov     w0, #1
             strb    w0, [x22]
-            str     x20, [fp, #0x18]    // [V06 loc2]
-            b       G_M62024_IG14
+            str     x23, [fp, #0x18]    // [V06 loc2]
+            b       G_M62024_IG15
                       ;; size=16 bbWeight=1 PerfScore 3.50
-G_M62024_IG13:        ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
-            ; gcrRegs -[x20]
+G_M62024_IG14:        ; bbWeight=1, gcVars=0000000000000010 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
+            ; gcrRegs -[x23]
             ; GC ptr vars -{V06}
             ldr     x0, [fp, #0x20]    // [V04 loc0]
             ; gcrRegs +[x0]
@@ -157,44 +156,44 @@ G_M62024_IG13:        ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=000
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            b       G_M62024_IG18
+            b       G_M62024_IG19
                       ;; size=20 bbWeight=1 PerfScore 7.50
-G_M62024_IG14:        ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG15:        ; bbWeight=1, gcVars=0000000000001010 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; byrRegs -[x22]
-            ; GC ptr vars +{V02 V04 V06 V14}
+            ; GC ptr vars +{V04 V06 V12}
             ldr     x0, [fp, #0x30] // [V13 PSPSym]
-            bl      G_M62024_IG22
+            bl      G_M62024_IG23
                        ;; size=8 bbWeight=1 PerfScore 3.00
-G_M62024_IG15:        ; bbWeight=1, nogc, extend
+G_M62024_IG16:        ; bbWeight=1, nogc, extend
             nop     
                        ;; size=4 bbWeight=1 PerfScore 0.50
-G_M62024_IG16:        ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            ; GC ptr vars -{V02 V04 V14}
+G_M62024_IG17:        ; bbWeight=1, gcVars=0000000000001000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            ; GC ptr vars -{V04 V12}
             ldr     x0, [fp, #0x18]    // [V06 loc2]
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M62024_IG17:        ; bbWeight=1, epilog, nogc, extend
+G_M62024_IG18:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
             ldp     fp, lr, [sp], #0x60
             ret     lr
                        ;; size=20 bbWeight=1 PerfScore 6.00
-G_M62024_IG18:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
+G_M62024_IG19:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
             ; gcrRegs -[x0]
             ; byrRegs +[x22]
             ; GC ptr vars -{V06}
             strb    wzr, [x22]
             mov     x0, xzr
                        ;; size=8 bbWeight=1 PerfScore 1.50
-G_M62024_IG19:        ; bbWeight=1, epilog, nogc, extend
+G_M62024_IG20:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
             ldp     fp, lr, [sp], #0x60
             ret     lr
                        ;; size=20 bbWeight=1 PerfScore 6.00
-G_M62024_IG20:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG21:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; byrRegs -[x22]
             mov     w0, #17
             movz    x1, #0xD1FFAB1E      // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
@@ -205,7 +204,7 @@ G_M62024_IG20:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             ; gcr arg pop 0
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG21:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG22:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     w0, #12
             movz    x1, #0xD1FFAB1E      // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -215,8 +214,8 @@ G_M62024_IG21:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcr arg pop 0
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG22:        ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
-            ; GC ptr vars +{V02 V04 V06 V14}
+G_M62024_IG23:        ; bbWeight=1, gcVars=0000000000001010 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+            ; GC ptr vars +{V04 V06 V12}
             stp     fp, lr, [sp, #-0x40]!
...
  
  
libraries.pmi.linux.arm64.checked.mch
-24 (-26.09%) : 13283.dasm - Roslyn.Utilities.EnumUtilities:GetValuesubyte:ubyte
@@ -9,9 +9,7 @@
 ; Final local variable assignments
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V01 tmp1         [V01,T01] (  3,  4.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V02 tmp2         [V02,T02] (  3,  1.25)    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V03 tmp3         [V03,T00] (  5,  6.75)     ref  ->   x0         class-hnd "spilling QMark2" <ubyte[]>
+;  V01 tmp1         [V01,T00] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
@@ -19,7 +17,7 @@ G_M58003_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     fp, lr, [sp, #-0x10]!
             mov     fp, sp
                        ;; size=8 bbWeight=1 PerfScore 1.50
-G_M58003_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M58003_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -31,31 +29,19 @@ G_M58003_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x0]
             mov     x1, x0
             ; gcrRegs +[x1]
-            cbnz    x0, G_M58003_IG04
-                       ;; size=40 bbWeight=1 PerfScore 8.50
-G_M58003_IG03:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x1]
+            movz    x0, #0xD1FFAB1E
+            ; gcrRegs -[x0]
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
+            ; gcrRegs -[x1] +[x0]
+                       ;; size=52 bbWeight=1 PerfScore 10.00
+G_M58003_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
-G_M58003_IG04:        ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x1]
-            ldr     x2, [x0]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #0xD1FFAB1E LSL #32
-            cmp     x2, x3
-            beq     G_M58003_IG03
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M58003_IG05:        ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x3
-            bl      CORINFO_HELP_CHKCASTARRAY
-            ; gcrRegs -[x1] +[x0]
-            b       G_M58003_IG03
-                       ;; size=12 bbWeight=0.12 PerfScore 0.31
 
-; Total bytes of code 92, prolog size 8, PerfScore 13.81, instruction count 23, allocated bytes for code 92 (MethodHash=01371d6c) for method Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 13.50, instruction count 17, allocated bytes for code 68 (MethodHash=01371d6c) for method Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -66,7 +52,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 23 (0x00017) Actual length = 92 (0x00005c)
+  Function Length   : 17 (0x00011) Actual length = 68 (0x000044)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-44 (-23.91%) : 4164.dasm - System.ValueTuple2[System.__Canon,System.Nullable1[int]]:GetHashCode():int:this (FullOpts)
@@ -10,30 +10,30 @@
 ;
 ;  V00 this         [V00,T00] (  6,  5.50)   byref  ->  x19         this single-def
 ;* V01 TypeCtx      [V01    ] (  0,  0   )    long  ->  zero-ref    single-def
-;  V02 loc0         [V02    ] (  4,  2.50)     ref  ->  [fp+0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
-;  V03 loc1         [V03    ] (  5,  3.50)  struct ( 8) [fp+0x18]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+;  V02 loc0         [V02    ] (  4,  2.50)     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
+;* V03 loc1         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
-;  V06 tmp2         [V06,T04] (  3,  2   )   byref  ->   x0        
-;  V07 tmp3         [V07,T05] (  3,  2   )     int  ->   x0        
-;  V08 tmp4         [V08,T01] (  3,  5   )   byref  ->   x1         single-def "impAppendStmt"
+;  V06 tmp2         [V06,T03] (  3,  2   )   byref  ->   x0        
+;  V07 tmp3         [V07,T04] (  3,  2   )     int  ->   x0        
+;  V08 tmp4         [V08,T01] (  3,  4.03)   byref  ->   x1         single-def "impAppendStmt"
 ;* V09 tmp5         [V09    ] (  0,  0   )     int  ->  zero-ref   
-;  V10 tmp6         [V10,T03] (  4,  2.02)   byref  ->   x2        
+;* V10 tmp6         [V10    ] (  0,  0   )   byref  ->  zero-ref    single-def
 ;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref   
-;  V12 tmp8         [V12,T06] (  3,  2   )     int  ->   x1        
-;  V13 tmp9         [V13,T07] (  3,  1   )     int  ->   x1         "Inline return value spill temp"
+;* V12 tmp8         [V12    ] (  0,  0   )     int  ->  zero-ref   
+;  V13 tmp9         [V13,T05] (  3,  1.50)     int  ->   x1         "Inline return value spill temp"
 ;* V14 tmp10        [V14    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;  V15 tmp11        [V15    ] (  5,  3.50)   ubyte  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03.hasValue (fldOffset=0x0)" P-DEP
-;  V16 tmp12        [V16    ] (  3,  2   )     int  ->  [fp+0x1C]  do-not-enreg[X] addr-exposed "field V03.value (fldOffset=0x4)" P-DEP
+;* V15 tmp11        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V16 tmp12        [V16    ] (  0,  0   )     int  ->  zero-ref    "field V03.value (fldOffset=0x4)" P-INDEP
 ;  V17 tmp13        [V17,T02] (  3,  3   )     ref  ->   x0         single-def "argument with side effect"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M34277_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
-            str     x19, [sp, #0x28]
+            stp     fp, lr, [sp, #-0x20]!
+            str     x19, [sp, #0x18]
             mov     fp, sp
-            str     xzr, [fp, #0x20]   // [V02 loc0]
+            str     xzr, [fp, #0x10] // [V02 loc0]
             mov     x19, x0
             ; byrRegs +[x19]
                        ;; size=20 bbWeight=1 PerfScore 4.00
@@ -41,7 +41,7 @@ G_M34277_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
             ldrsb   wzr, [x19]
             mov     x0, x19
             ; byrRegs +[x0]
-            ldr     x1, [fp, #0x20]   // [V02 loc0]
+            ldr     x1, [fp, #0x10]  // [V02 loc0]
             ; gcrRegs +[x1]
             cbnz    x1, G_M34277_IG04
                        ;; size=16 bbWeight=1 PerfScore 6.50
@@ -50,11 +50,11 @@ G_M34277_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
             ; byrRegs -[x0]
             ldr     x0, [x19]
             ; gcrRegs +[x0]
-            str     x0, [fp, #0x20]   // [V02 loc0]
-            add     x0, fp, #32    // [V02 loc0]
+            str     x0, [fp, #0x10]  // [V02 loc0]
+            add     x0, fp, #16    // [V02 loc0]
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
-            ldr     x1, [fp, #0x20]   // [V02 loc0]
+            ldr     x1, [fp, #0x10]  // [V02 loc0]
             ; gcrRegs +[x1]
             cbnz    x1, G_M34277_IG04
             mov     w0, wzr
@@ -76,52 +76,33 @@ G_M34277_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80001 {x0 x1
 G_M34277_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
             add     x1, x19, #8
             ; byrRegs +[x1]
-            str     xzr, [fp, #0x18]  // [V03 loc1]
-            mov     x2, x1
-            ; byrRegs +[x2]
-            ldrb    w3, [fp, #0x18]    // [V15 tmp11]
-            cbnz    w3, G_M34277_IG07
-                       ;; size=20 bbWeight=1 PerfScore 5.00
-G_M34277_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
-            ; byrRegs -[x2 x19]
-            ldr     x2, [x1]
-            str     x2, [fp, #0x18]    // [V03 loc1]
-            add     x2, fp, #24    // [V03 loc1]
-            ; byrRegs +[x2]
-            ldrb    w1, [fp, #0x18]    // [V15 tmp11]
-            ; byrRegs -[x1]
-            cbnz    w1, G_M34277_IG07
+            ldrb    w2, [x1]
+            cbnz    w2, G_M34277_IG07
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M34277_IG06:        ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; byrRegs -[x1 x19]
             mov     w1, wzr
-            b       G_M34277_IG10
-                       ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M34277_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref, isz
-            ldrb    w1, [x2]
-            cbnz    w1, G_M34277_IG09
-                       ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M34277_IG08:        ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; byrRegs -[x2]
-            mov     w1, wzr
-            b       G_M34277_IG10
+            b       G_M34277_IG08
                        ;; size=8 bbWeight=0.48 PerfScore 0.73
-G_M34277_IG09:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
-            ; byrRegs +[x2]
-            ldr     w1, [x2, #0x04]
+G_M34277_IG07:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+            ; byrRegs +[x1]
+            ldr     w1, [x1, #0x04]
+            ; byrRegs -[x1]
                         ;; size=4 bbWeight=0.02 PerfScore 0.05
-G_M34277_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; byrRegs -[x2]
+G_M34277_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             ldr     x2, [x2]
             blr     x2
                        ;; size=20 bbWeight=1 PerfScore 5.50
-G_M34277_IG11:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x19, [sp, #0x28]
-            ldp     fp, lr, [sp], #0x30
+G_M34277_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x19, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 184, prolog size 16, PerfScore 43.27, instruction count 46, allocated bytes for code 184 (MethodHash=4c2b7a1a) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
+; Total bytes of code 140, prolog size 16, PerfScore 36.28, instruction count 35, allocated bytes for code 140 (MethodHash=4c2b7a1a) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -132,7 +113,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 46 (0x0002e) Actual length = 184 (0x0000b8)
+  Function Length   : 35 (0x00023) Actual length = 140 (0x00008c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -140,8 +121,8 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 05       save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    D0 03       save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+    83          save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
     E4          end
     E4          end
     E4          end
  
-44 (-17.74%) : 4168.dasm - System.ValueTuple2[System.__Canon,System.Nullable1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
@@ -11,22 +11,22 @@
 ;  V00 this         [V00,T00] (  6,  5.50)   byref  ->  x19         this single-def
 ;* V01 TypeCtx      [V01    ] (  0,  0   )    long  ->  zero-ref    single-def
 ;  V02 loc0         [V02    ] (  4,  2.50)     ref  ->  [fp+0x18]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
-;  V03 loc1         [V03    ] (  5,  3.50)  struct ( 8) [fp+0x10]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+;* V03 loc1         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
-;  V06 tmp2         [V06,T04] (  3,  2   )   byref  ->   x0        
-;  V07 tmp3         [V07,T05] (  3,  2   )     ref  ->  x20        
+;  V06 tmp2         [V06,T03] (  3,  2   )   byref  ->   x0        
+;  V07 tmp3         [V07,T04] (  3,  2   )     ref  ->  x20        
 ;  V08 tmp4         [V08,T01] (  3,  5   )   byref  ->   x0         single-def "impAppendStmt"
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V11 tmp7         [V11,T03] (  4,  2.50)   byref  ->   x1        
+;* V11 tmp7         [V11    ] (  0,  0   )   byref  ->  zero-ref    single-def
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref   
-;  V14 tmp10        [V14,T06] (  3,  2   )     ref  ->   x2        
-;  V15 tmp11        [V15,T07] (  3,  1.50)     ref  ->   x2         class-hnd "Inline return value spill temp" <System.String>
+;* V14 tmp10        [V14    ] (  0,  0   )     ref  ->  zero-ref   
+;  V15 tmp11        [V15,T05] (  3,  2   )     ref  ->   x2         class-hnd "Inline return value spill temp" <System.String>
 ;* V16 tmp12        [V16    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;  V17 tmp13        [V17    ] (  5,  3.50)   ubyte  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03.hasValue (fldOffset=0x0)" P-DEP
-;  V18 tmp14        [V18    ] (  3,  2   )     int  ->  [fp+0x14]  do-not-enreg[X] addr-exposed "field V03.value (fldOffset=0x4)" P-DEP
+;* V17 tmp13        [V17    ] (  0,  0   )   ubyte  ->  zero-ref    "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V18 tmp14        [V18    ] (  0,  0   )     int  ->  zero-ref    "field V03.value (fldOffset=0x4)" P-INDEP
 ;  V19 tmp15        [V19,T02] (  3,  3   )     ref  ->   x0         single-def "argument with side effect"
 ;
 ; Lcl frame size = 16
@@ -79,38 +79,21 @@ G_M39544_IG05:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
             ; gcrRegs -[x0]
             add     x0, x19, #8
             ; byrRegs +[x0]
-            str     xzr, [fp, #0x10]  // [V03 loc1]
-            mov     x1, x0
-            ; byrRegs +[x1]
-            ldrb    w2, [fp, #0x10]    // [V17 tmp13]
-            cbnz    w2, G_M39544_IG07
-                       ;; size=20 bbWeight=1 PerfScore 5.00
-G_M39544_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
-            ; byrRegs -[x1 x19]
-            ldr     x1, [x0]
-            str     x1, [fp, #0x10]    // [V03 loc1]
-            add     x1, fp, #16    // [V03 loc1]
-            ; byrRegs +[x1]
-            ldrb    w0, [fp, #0x10]    // [V17 tmp13]
-            ; byrRegs -[x0]
-            cbnz    w0, G_M39544_IG07
-            mov     x2, xzr
-            ; gcrRegs +[x2]
-            b       G_M39544_IG09
-                       ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M39544_IG07:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0002 {x1}, byref, isz
-            ; gcrRegs -[x2]
-            ldrb    w0, [x1]
-            cbnz    w0, G_M39544_IG08
+            ldrb    w1, [x0]
+            cbnz    w1, G_M39544_IG07
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M39544_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            ; byrRegs -[x0 x19]
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
-            b       G_M39544_IG09
-                       ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M39544_IG08:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0002 {x1}, byref
-            ldr     w0, [x1, #0x04]
+            b       G_M39544_IG08
+                       ;; size=16 bbWeight=0.50 PerfScore 1.25
+G_M39544_IG07:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref
+            ; byrRegs +[x0]
+            ldr     w0, [x0, #0x04]
+            ; byrRegs -[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Number:Int32ToDecStr(int):System.String
-            ; byrRegs -[x1]
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
@@ -119,7 +102,7 @@ G_M39544_IG08:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0002 {x
             mov     x2, x0
             ; gcrRegs +[x2]
                        ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M39544_IG09:        ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref
+G_M39544_IG08:        ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -136,13 +119,13 @@ G_M39544_IG09:        ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}
             blr     x4
             ; gcrRegs -[x2 x20]
                        ;; size=48 bbWeight=1 PerfScore 9.00
-G_M39544_IG10:        ; bbWeight=1, epilog, nogc, extend
+G_M39544_IG09:        ; bbWeight=1, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 3.00
 
-; Total bytes of code 248, prolog size 16, PerfScore 51.00, instruction count 62, allocated bytes for code 248 (MethodHash=50db6587) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
+; Total bytes of code 204, prolog size 16, PerfScore 44.00, instruction count 51, allocated bytes for code 204 (MethodHash=50db6587) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -153,7 +136,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 62 (0x0003e) Actual length = 248 (0x0000f8)
+  Function Length   : 51 (0x00033) Actual length = 204 (0x0000cc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+48 (+23.08%) : 12892.dasm - Roslyn.Utilities.FileUtilities:RethrowExceptionsAsIOExceptionAsync[System.Canon,System.Nullable1[int]](System.Func2[System.Nullable`1[int],System.Canon],System.Nullable1[int]):System.Threading.Tasks.Task1System.__Canon
@@ -8,9 +8,9 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
-;  V01 arg0         [V01,T03] (  3,  3   )     ref  ->   x1         class-hnd single-def <System.Func`2[System.Nullable`1[int],System.__Canon]>
-;  V02 arg1         [V02,T04] (  3,  3   )  struct ( 8)  x2         single-def <System.Nullable`1[int]>
+;  V00 TypeCtx      [V00,T00] (  9,  6.76)    long  ->  x19         single-def
+;  V01 arg0         [V01,T04] (  3,  3   )     ref  ->  x20         class-hnd single-def <System.Func`2[System.Nullable`1[int],System.__Canon]>
+;  V02 arg1         [V02,T05] (  3,  3   )  struct ( 8) x21         single-def <System.Nullable`1[int]>
 ;  V03 loc0         [V03    ] (  6,  6   )  struct (48) [fp+0x10]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op <Roslyn.Utilities.FileUtilities+<RethrowExceptionsAsIOExceptionAsync>d__15`2[System.__Canon,System.Nullable`1[int]]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -18,19 +18,22 @@
 ;* V07 tmp3         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]>
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V08.m_task (fldOffset=0x0)" P-INDEP
-;  V10 tmp6         [V10,T08] (  2,  4   )    long  ->   x1         "argument with side effect"
-;  V11 tmp7         [V11,T09] (  2,  4   )    long  ->   x1         "argument with side effect"
-;  V12 rat0         [V12,T06] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V13 rat1         [V13,T01] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V14 rat2         [V14,T05] (  3,  4.48)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V15 rat3         [V15,T07] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V16 rat4         [V16,T02] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V10 tmp6         [V10,T09] (  2,  4   )    long  ->   x1         "argument with side effect"
+;  V11 tmp7         [V11,T10] (  2,  4   )    long  ->   x1         "argument with side effect"
+;* V12 rat0         [V12,T11] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V13 rat1         [V13,T01] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V14 rat2         [V14,T07] (  3,  4   )    long  ->   x1         "runtime lookup"
+;  V15 rat3         [V15,T02] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V16 rat4         [V16,T06] (  3,  4.48)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V17 rat5         [V17,T08] (  3,  4   )    long  ->   x1         "runtime lookup"
+;  V18 rat6         [V18,T03] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 56
 
 G_M31834_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x50]!
-            str     x19, [sp, #0x48]
+            stp     fp, lr, [sp, #-0x60]!
+            stp     x19, x20, [sp, #0x48]
+            str     x21, [sp, #0x58]
             mov     fp, sp
             add     x9, fp, #16
             movi    v16.16b, #0
@@ -38,35 +41,49 @@ G_M31834_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     xzr, xzr, [x9, #0x20]
             str     x0, [fp, #0x40]
             mov     x19, x0
-                      ;; size=36 bbWeight=1 PerfScore 7.00
-G_M31834_IG02:        ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x1]
-            str     x1, [fp, #0x10]    // [V03 loc0]
-            str     x2, [fp, #0x28]    // [V03 loc0+0x18]
-            movn    w0, #0
-            str     w0, [fp, #0x18]    // [V03 loc0+0x08]
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     x21, x2
+                       ;; size=48 bbWeight=1 PerfScore 9.00
+G_M31834_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x38]
-            ldr     x1, [x0, #0x10]
-            ; gcrRegs -[x1]
-            cmp     x1, #32
-            ble     G_M31834_IG05
-                       ;; size=32 bbWeight=1 PerfScore 11.00
-G_M31834_IG03:        ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x0, #0x20]
-            cbz     x1, G_M31834_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M31834_IG04:        ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            b       G_M31834_IG06
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M31834_IG05:        ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M31834_IG04
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M31834_IG03:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M31834_IG04:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            str     x20, [fp, #0x10]   // [V03 loc0]
+            str     x21, [fp, #0x28]   // [V03 loc0+0x18]
+            movn    w0, #0
+            str     w0, [fp, #0x18]    // [V03 loc0+0x08]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x10]
+            cmp     x1, #32
+            ble     G_M31834_IG07
+                       ;; size=32 bbWeight=1 PerfScore 11.00
+G_M31834_IG05:        ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x20]
+            ldr     x1, [x0, #0x20]
+            cbz     x1, G_M31834_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M31834_IG06:        ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            b       G_M31834_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M31834_IG07:        ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
             mov     x1, x0
                        ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M31834_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M31834_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             add     x0, fp, #32  // [V03 loc0+0x10]
             add     x2, fp, #16    // [V03 loc0]
             movz    x3, #0xD1FFAB1E      // code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:Start[Roslyn.Utilities.FileUtilities+<RethrowExceptionsAsIOExceptionAsync>d__15`2[System.__Canon,System.Nullable`1[int]]](byref):this
@@ -76,20 +93,20 @@ G_M31834_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             blr     x3
             ldr     x0, [x19, #0x38]
             ldr     x1, [x0, #0x18]
-            cbz     x1, G_M31834_IG08
+            cbz     x1, G_M31834_IG10
                       ;; size=40 bbWeight=1 PerfScore 13.50
-G_M31834_IG07:        ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            b       G_M31834_IG09
+G_M31834_IG09:        ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            b       G_M31834_IG11
                       ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M31834_IG08:        ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31834_IG10:        ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x1, x0
                        ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M31834_IG09:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M31834_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             add     x0, fp, #32    // [V03 loc0+0x10]
             movz    x2, #0xD1FFAB1E      // code for System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[System.__Canon]:get_Task():System.Threading.Tasks.Task`1[System.__Canon]:this
             movk    x2, #0xD1FFAB1E LSL #16
@@ -98,13 +115,14 @@ G_M31834_IG09:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x2
             ; gcrRegs +[x0]
                        ;; size=24 bbWeight=1 PerfScore 6.00
-G_M31834_IG10:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x19, [sp, #0x48]
-            ldp     fp, lr, [sp], #0x50
+G_M31834_IG12:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x21, [sp, #0x58]
+            ldp     x19, x20, [sp, #0x48]
+            ldp     fp, lr, [sp], #0x60
             ret     lr
-                        ;; size=12 bbWeight=1 PerfScore 4.00
+                      ;; size=16 bbWeight=1 PerfScore 5.00
 
-; Total bytes of code 208, prolog size 32, PerfScore 48.10, instruction count 52, allocated bytes for code 208 (MethodHash=87d683a5) for method Roslyn.Utilities.FileUtilities:RethrowExceptionsAsIOExceptionAsync[System.__Canon,System.Nullable`1[int]](System.Func`2[System.Nullable`1[int],System.__Canon],System.Nullable`1[int]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
+; Total bytes of code 256, prolog size 36, PerfScore 58.70, instruction count 64, allocated bytes for code 256 (MethodHash=87d683a5) for method Roslyn.Utilities.FileUtilities:RethrowExceptionsAsIOExceptionAsync[System.__Canon,System.Nullable`1[int]](System.Func`2[System.Nullable`1[int],System.__Canon],System.Nullable`1[int]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -115,7 +133,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 52 (0x00034) Actual length = 208 (0x0000d0)
+  Function Length   : 64 (0x00040) Actual length = 256 (0x000100)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -123,10 +141,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 09       save_reg X#0 Z#9 (0x09); str x19, [sp, #72]
-    89          save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
-    E4          end
-    E4          end
+    D0 8B       save_reg X#2 Z#11 (0x0B); str x21, [sp, #88]
+    C8 09       save_regp X#0 Z#9 (0x09); stp x19, x20, [sp, #72]
+    8B          save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
     E4          end
     E4          end
 
  
+44 (+33.33%) : 17805.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:CollectSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValueProvider1[System.Collections.Immutable.ImmutableArray1[System.__Canon]] (FullOpts)
@@ -8,55 +8,58 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.20)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T01] (  3,  6   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.BatchNode`1[System.__Canon]>
+;  V03 tmp1         [V03,T01] (  3,  6   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.BatchNode`1[System.__Canon]>
 ;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
 ;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp5         [V07    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V08 tmp6         [V08,T04] (  2,  2   )     ref  ->  x19         single-def "field V01.Node (fldOffset=0x0)" P-INDEP
-;  V09 tmp7         [V09,T05] (  2,  2   )   ubyte  ->  x20         single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-;  V10 tmp8         [V10,T06] (  2,  2   )     ref  ->   x0         single-def "field V05.Node (fldOffset=0x0)" P-INDEP
-;  V11 tmp9         [V11,T07] (  2,  2   )   ubyte  ->   x1         "field V05.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-;  V12 rat0         [V12,T03] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V13 rat1         [V13,T02] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V08 tmp6         [V08,T06] (  2,  2   )     ref  ->  x20         single-def "field V01.Node (fldOffset=0x0)" P-INDEP
+;  V09 tmp7         [V09,T07] (  2,  2   )   ubyte  ->  x21         single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+;  V10 tmp8         [V10,T08] (  2,  2   )     ref  ->   x0         single-def "field V05.Node (fldOffset=0x0)" P-INDEP
+;  V11 tmp9         [V11,T09] (  2,  2   )   ubyte  ->   x1         "field V05.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+;  V12 rat0         [V12,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V13 rat1         [V13,T02] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V14 rat2         [V14,T10] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V15 rat3         [V15,T03] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V16 rat4         [V16,T04] (  2,  3.20)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M15345_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
-            mov     x19, x1
-            ; gcrRegs +[x19]
-            mov     w20, w2
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M15345_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x0, #0x38]
-            ldr     x1, [x1, #0x10]
-            cbz     x1, G_M15345_IG04
+            str     x0, [fp, #0x18]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     w21, w2
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M15345_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M15345_IG04
                       ;; size=12 bbWeight=1 PerfScore 7.00
-G_M15345_IG03:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M15345_IG03:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             b       G_M15345_IG05
                        ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M15345_IG04:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M15345_IG04:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x1, x0
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M15345_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x0, x1
-            bl      CORINFO_HELP_NEWSFAST
+G_M15345_IG05:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            mov     x1, x19
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            mov     x1, x20
             ; gcrRegs +[x1]
             mov     x2, xzr
             mov     x3, xzr
@@ -65,19 +68,36 @@ G_M15345_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             movk    x4, #0xD1FFAB1E LSL #32
             ldr     x4, [x4]
             blr     x4
-            ; gcrRegs -[x0-x1 x19]
-            mov     x0, x21
+            ; gcrRegs -[x0-x1 x20]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M15345_IG07
+                       ;; size=56 bbWeight=1 PerfScore 16.00
+G_M15345_IG06:        ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M15345_IG08
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M15345_IG07:        ; bbWeight=0.36, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M15345_IG08:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x22
             ; gcrRegs +[x0]
-            uxtb    w1, w20
-                       ;; size=52 bbWeight=1 PerfScore 10.00
-G_M15345_IG06:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            uxtb    w1, w21
+                       ;; size=8 bbWeight=1 PerfScore 1.00
+G_M15345_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 28.90, instruction count 33, allocated bytes for code 132 (MethodHash=59b2c40e) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
+; Total bytes of code 176, prolog size 20, PerfScore 39.68, instruction count 44, allocated bytes for code 176 (MethodHash=59b2c40e) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -88,7 +108,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 44 (0x0002c) Actual length = 176 (0x0000b0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,9 +116,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+48 (+35.29%) : 13404.dasm - Roslyn.Utilities.InterlockedOperations:InitializeSystem.Canon,System.Nullable1[int]](byref,System.Func2[System.Nullable1[int],System.Collections.Immutable.ImmutableArray1[System.__Canon]],System.Nullable1[int]):System.Collections.Immutable.ImmutableArray1[System.Canon
@@ -8,86 +8,105 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  3.68)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  4   )   byref  ->  x19         single-def
-;  V02 arg1         [V02,T02] (  3,  2.50)     ref  ->  x20         class-hnd single-def <System.Func`2[System.Nullable`1[int],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
-;  V03 arg2         [V03,T03] (  3,  2.50)  struct ( 8) [fp+0x10]  do-not-enreg[S] single-def <System.Nullable`1[int]>
+;  V00 TypeCtx      [V00,T00] (  7,  4.88)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  4   )   byref  ->  x20         single-def
+;  V02 arg1         [V02,T03] (  3,  2.50)     ref  ->  x21         class-hnd single-def <System.Func`2[System.Nullable`1[int],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
+;  V03 arg2         [V03,T04] (  3,  2.50)  struct ( 8) [fp+0x18]  do-not-enreg[S] single-def <System.Nullable`1[int]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V06 tmp2         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V07 tmp3         [V07,T07] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V08 rat0         [V08,T06] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V09 rat1         [V09,T04] (  3,  2.80)    long  ->   x1         "spilling expr"
-;  V10 rat2         [V10,T05] (  3,  2.24)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V07 tmp3         [V07,T08] (  2,  2   )    long  ->   x0         "argument with side effect"
+;* V08 rat0         [V08,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V09 rat1         [V09,T02] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V10 rat2         [V10,T07] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V11 rat3         [V11,T05] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V12 rat4         [V12,T06] (  3,  2.24)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 24
 
 G_M51389_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
-            stp     x19, x20, [sp, #0x20]
+            stp     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x28]
+            str     x21, [sp, #0x38]
             mov     fp, sp
-            stp     x3, x0, [fp, #0x10]    // [V03 arg2]
-            mov     x19, x1
-            ; byrRegs +[x19]
-            mov     x20, x2
-            ; gcrRegs +[x20]
-                       ;; size=24 bbWeight=1 PerfScore 4.50
-G_M51389_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x1, [x19]
-            ; gcrRegs +[x1]
-            cbz     x1, G_M51389_IG05
-                       ;; size=8 bbWeight=1 PerfScore 4.00
-G_M51389_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
-            ; gcrRegs -[x1 x20]
-            ldr     x0, [x19]
-            ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M51389_IG04:        ; bbWeight=0.50, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x30
-            ret     lr
-                       ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M51389_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, gcvars, byref, isz
-            ; gcrRegs -[x0] +[x20]
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x10]
-            cmp     x2, #32
-            ble     G_M51389_IG08
-                       ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M51389_IG06:        ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x2, [x1, #0x20]
-            cbz     x2, G_M51389_IG08
-                       ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M51389_IG07:        ; bbWeight=0.32, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x2
-            b       G_M51389_IG09
-                       ;; size=8 bbWeight=0.32 PerfScore 0.48
-G_M51389_IG08:        ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+            stp     x3, x0, [fp, #0x18]   // [V03 arg2]
+            mov     x19, x0
+            mov     x20, x1
+            ; byrRegs +[x20]
+            mov     x21, x2
+            ; gcrRegs +[x21]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M51389_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M51389_IG04
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M51389_IG03:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
-                       ;; size=16 bbWeight=0.18 PerfScore 0.45
-G_M51389_IG09:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x1, x19
+                      ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M51389_IG04:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
+            ; gcrRegs +[x0]
+            cbz     x0, G_M51389_IG07
+                       ;; size=8 bbWeight=1 PerfScore 4.00
+G_M51389_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+            ; gcrRegs -[x0 x21]
+            ldr     x0, [x20]
+            ; gcrRegs +[x0]
+                       ;; size=4 bbWeight=0.50 PerfScore 1.50
+G_M51389_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x21, [sp, #0x38]
+            ldp     x19, x20, [sp, #0x28]
+            ldp     fp, lr, [sp], #0x40
+            ret     lr
+                       ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M51389_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, gcvars, byref, isz
+            ; gcrRegs -[x0] +[x21]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x10]
+            cmp     x1, #32
+            ble     G_M51389_IG10
+                       ;; size=16 bbWeight=0.50 PerfScore 3.75
+G_M51389_IG08:        ; bbWeight=0.40, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x20]
+            cbz     x0, G_M51389_IG10
+                       ;; size=8 bbWeight=0.40 PerfScore 1.60
+G_M51389_IG09:        ; bbWeight=0.32, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            b       G_M51389_IG11
+                       ;; size=4 bbWeight=0.32 PerfScore 0.32
+G_M51389_IG10:        ; bbWeight=0.18, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=20 bbWeight=0.18 PerfScore 0.54
+G_M51389_IG11:        ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x1, x20
             ; byrRegs +[x1]
-            mov     x2, x20
+            mov     x2, x21
             ; gcrRegs +[x2]
-            ldr     x3, [fp, #0x10]   // [V03 arg2]
+            ldr     x3, [fp, #0x18]  // [V03 arg2]
             movz    x4, #0xD1FFAB1E      // code for Roslyn.Utilities.InterlockedOperations:Initialize_Slow[System.__Canon,System.Nullable`1[int]](byref,System.Func`2[System.Nullable`1[int],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Nullable`1[int]):System.Collections.Immutable.ImmutableArray`1[System.__Canon]
             movk    x4, #0xD1FFAB1E LSL #16
             movk    x4, #0xD1FFAB1E LSL #32
             ldr     x4, [x4]
                        ;; size=28 bbWeight=0.50 PerfScore 3.75
-G_M51389_IG10:        ; bbWeight=0.50, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x30
+G_M51389_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x21, [sp, #0x38]
+            ldp     x19, x20, [sp, #0x28]
+            ldp     fp, lr, [sp], #0x40
             br      x4
             ; gcr arg pop 0
-                      ;; size=12 bbWeight=0.50 PerfScore 1.50
+                       ;; size=16 bbWeight=0.50 PerfScore 2.50
 
-; Total bytes of code 136, prolog size 24, PerfScore 23.03, instruction count 34, allocated bytes for code 136 (MethodHash=0a103742) for method Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon,System.Nullable`1[int]](byref,System.Func`2[System.Nullable`1[int],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Nullable`1[int]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
+; Total bytes of code 184, prolog size 32, PerfScore 34.06, instruction count 46, allocated bytes for code 184 (MethodHash=0a103742) for method Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon,System.Nullable`1[int]](byref,System.Func`2[System.Nullable`1[int],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Nullable`1[int]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -98,7 +117,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 34 (0x00022) Actual length = 136 (0x000088)
+  Function Length   : 46 (0x0002e) Actual length = 184 (0x0000b8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -109,10 +128,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
-    E4          end
-    E4          end
+    D0 87       save_reg X#2 Z#7 (0x07); str x21, [sp, #56]
+    C8 05       save_regp X#0 Z#5 (0x05); stp x19, x20, [sp, #40]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
     E4          end
 
  
  
libraries_tests.run.linux.arm64.Release.mch
-36 (-14.52%) : 3959.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
@@ -9,13 +9,12 @@
 ; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
-;  V01 loc0         [V01,T02] (  7,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
+;  V00 arg0         [V00,T00] (  5,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
+;  V01 loc0         [V01,T01] (  5,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
+;  V03 tmp1         [V03,T02] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt return temp"
 ;* V05 tmp3         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;  V06 rat0         [V06,T00] (  6,  7   )     ref  ->   x0         class-hnd "replacement local" <System.Reflection.IReflectableType>
 ;
 ; Lcl frame size = 0
 
@@ -27,55 +26,34 @@ G_M46371_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
                        ;; size=16 bbWeight=1 PerfScore 3.00
 G_M46371_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M46371_IG10
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            cbnz    x0, G_M46371_IG06
-                       ;; size=12 bbWeight=1 PerfScore 2.50
-G_M46371_IG03:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M46371_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M46371_IG04:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            bne     G_M46371_IG11
-                       ;; size=24 bbWeight=1 PerfScore 6.00
-G_M46371_IG05:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x10]
-            ldp     fp, lr, [sp], #0x20
-            ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
-G_M46371_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            beq     G_M46371_IG03
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M46371_IG07:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
+            cbz     x19, G_M46371_IG06
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            cbnz    x0, G_M46371_IG04
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            cbz     x0, G_M46371_IG04
+            ldr     x1, [x0]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x1, x2
+            bne     G_M46371_IG07
+                       ;; size=52 bbWeight=1 PerfScore 11.00
+G_M46371_IG03:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x19, x20, [sp, #0x10]
+            ldp     fp, lr, [sp], #0x20
+            ret     lr
+                       ;; size=12 bbWeight=1 PerfScore 3.00
+G_M46371_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
@@ -92,18 +70,18 @@ G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             mov     x0, x20
             ; gcrRegs +[x0]
                        ;; size=48 bbWeight=0 PerfScore 0.00
-G_M46371_IG09:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG05:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M46371_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0 x20]
             mov     w0, #0xD1FFAB1E
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_STRCNS
+            bl      CORINFO_HELP_NEWARR_1_ALIGN8
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // code for System.ArgumentNullException:Throw(System.String)
@@ -115,21 +93,21 @@ G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             ; gcr arg pop 0
             brk_unix #0
                        ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46371_IG11:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M46371_IG07:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x0]
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
             movk    x11, #0xD1FFAB1E LSL #16
             movk    x11, #0xD1FFAB1E LSL #32
             ldr     x1, [x11]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M46371_IG12:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG08:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             br      x1
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 248, prolog size 16, PerfScore 18.50, instruction count 62, allocated bytes for code 248 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
+; Total bytes of code 212, prolog size 16, PerfScore 17.00, instruction count 53, allocated bytes for code 212 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -140,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 62 (0x0003e) Actual length = 248 (0x0000f8)
+  Function Length   : 53 (0x00035) Actual length = 212 (0x0000d4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-24 (-4.51%) : 3964.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:GetListByName(ulong,int,ulong,int,int,int):System.Canon[]:this (Tier1)
@@ -9,24 +9,24 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] ( 10,  4.00)     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-;  V01 arg1         [V01,T09] (  3,  2   )    long  ->   x1         single-def
-;  V02 arg2         [V02,T07] (  4,  3   )     int  ->   x2         single-def
-;  V03 arg3         [V03,T04] (  4,  3.00)    long  ->  x21         single-def
-;  V04 arg4         [V04,T05] (  4,  3.00)     int  ->  x22         single-def
-;  V05 arg5         [V05,T06] (  3,  3.00)     int  ->  x23         single-def
-;  V06 arg6         [V06,T03] (  5,  3.00)     int  ->  x20         single-def
+;  V00 this         [V00,T00] ( 10,  4.00)     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V01 arg1         [V01,T08] (  3,  2   )    long  ->   x1         single-def
+;  V02 arg2         [V02,T06] (  4,  3   )     int  ->   x2         single-def
+;  V03 arg3         [V03,T03] (  4,  3.00)    long  ->  x21         single-def
+;  V04 arg4         [V04,T04] (  4,  3.00)     int  ->  x22         single-def
+;  V05 arg5         [V05,T05] (  3,  3.00)     int  ->  x23         single-def
+;  V06 arg6         [V06,T02] (  5,  3.00)     int  ->  x20         single-def
 ;  V07 loc0         [V07    ] ( 10,  4.01)  struct (24) [fp+0x18]  do-not-enreg[XSF] addr-exposed ld-addr-op <System.RuntimeType+RuntimeTypeCache+Filter>
-;  V08 loc1         [V08,T11] ( 10,  3.25)     ref  ->  x21         class-hnd <<unknown class>>
+;  V08 loc1         [V08,T11] (  9,  3.00)     ref  ->  x21         class-hnd <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T10] (  4,  3.50)    long  ->   x1         "spilling helperCall"
-;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V12 tmp3         [V12,T00] (  5,  7.50)     ref  ->   x0         class-hnd "spilling QMark2" <System.__Canon[]>
-;* V13 tmp4         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-;  V14 tmp5         [V14,T12] (  2,  2.00)    long  ->  x21         "field V13.m_pStringHeap (fldOffset=0x0)" P-INDEP
-;  V15 tmp6         [V15,T13] (  2,  2.00)     int  ->  x22         "field V13.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-;  V16 rat0         [V16,T08] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V17 rat1         [V17,T02] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp2         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
+;  V12 tmp3         [V12,T12] (  2,  2.00)    long  ->  x21         "field V11.m_pStringHeap (fldOffset=0x0)" P-INDEP
+;  V13 tmp4         [V13,T13] (  2,  2.00)     int  ->  x22         "field V11.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+;  V14 tmp5         [V14,T10] (  2,  4   )    long  ->   x0         "argument with side effect"
+;  V15 rat0         [V15,T07] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V16 rat1         [V16,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V17 rat2         [V17,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -45,7 +45,7 @@ G_M19047_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             mov     w20, w6
                        ;; size=44 bbWeight=1 PerfScore 8.00
 G_M19047_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbnz    w2, G_M19047_IG20
+            cbnz    w2, G_M19047_IG18
                      ;; size=4 bbWeight=1 PerfScore 1.00
 G_M19047_IG03:        ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             str     x21, [fp, #0x18]   // [V07 loc0]
@@ -74,15 +74,16 @@ G_M19047_IG05:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             ldr     x0, [x19]
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
-            ldr     x1, [x1, #0x28]
-            cbz     x1, G_M19047_IG08
+            ldr     x2, [x1, #0x28]
+            cbz     x2, G_M19047_IG08
                       ;; size=20 bbWeight=1 PerfScore 13.00
 G_M19047_IG06:        ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x2
             b       G_M19047_IG09
-                     ;; size=4 bbWeight=0.80 PerfScore 0.80
+                        ;; size=8 bbWeight=0.80 PerfScore 1.20
 G_M19047_IG07:        ; bbWeight=0.00, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
             cmp     w20, #6
-            bhi     G_M19047_IG19
+            bhi     G_M19047_IG17
             mov     w1, w20
             adr     x0, [@RWD00]
             ldr     w0, [x0, x1, LSL #2]
@@ -94,35 +95,22 @@ G_M19047_IG08:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=000
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            mov     x1, x0
-                       ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M19047_IG09:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x21
-            ; gcrRegs +[x0]
-            cbz     x0, G_M19047_IG12
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19047_IG10:        ; bbWeight=0.50, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            cmp     x2, x1
-            beq     G_M19047_IG12
-                       ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M19047_IG11:        ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x1
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
+                       ;; size=16 bbWeight=0.20 PerfScore 0.50
+G_M19047_IG09:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             mov     x1, x21
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1 x21] +[x0]
-                       ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M19047_IG12:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+                     ;; size=8 bbWeight=1 PerfScore 1.50
+G_M19047_IG10:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
             ldp     fp, lr, [sp], #0x60
             ret     lr
                        ;; size=20 bbWeight=1 PerfScore 6.00
-G_M19047_IG13:        ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M19047_IG11:        ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             add     x1, fp, #24    // [V07 loc0]
             mov     x0, x19
@@ -136,6 +124,34 @@ G_M19047_IG13:        ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=800
             ; gcrRegs +[x21]
             b       G_M19047_IG05
                        ;; size=36 bbWeight=0.00 PerfScore 0.01
+G_M19047_IG12:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x21]
+            add     x1, fp, #24    // [V07 loc0]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            ldr     x2, [x2]
+            blr     x2
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            b       G_M19047_IG05
+                       ;; size=36 bbWeight=0 PerfScore 0.00
+G_M19047_IG13:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x21]
+            add     x1, fp, #24    // [V07 loc0]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            ldr     x2, [x2]
+            blr     x2
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            b       G_M19047_IG05
+                       ;; size=36 bbWeight=0 PerfScore 0.00
 G_M19047_IG14:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x21]
             add     x1, fp, #24    // [V07 loc0]
@@ -155,7 +171,7 @@ G_M19047_IG15:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             add     x1, fp, #24    // [V07 loc0]
             mov     x0, x19
             ; gcrRegs +[x0]
-            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movz    x2, #0xD1FFAB1E      // code for System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeEventInfo[]:this
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             ldr     x2, [x2]
@@ -178,35 +194,7 @@ G_M19047_IG16:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs +[x21]
             b       G_M19047_IG05
                        ;; size=36 bbWeight=0 PerfScore 0.00
-G_M19047_IG17:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x21]
-            add     x1, fp, #24    // [V07 loc0]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            movz    x2, #0xD1FFAB1E      // code for System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeEventInfo[]:this
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            ldr     x2, [x2]
-            blr     x2
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            b       G_M19047_IG05
-                       ;; size=36 bbWeight=0 PerfScore 0.00
-G_M19047_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x21]
-            add     x1, fp, #24    // [V07 loc0]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            movz    x2, #0xD1FFAB1E      // code for <unknown method>
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            ldr     x2, [x2]
-            blr     x2
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            b       G_M19047_IG05
-                       ;; size=36 bbWeight=0 PerfScore 0.00
-G_M19047_IG19:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M19047_IG17:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -218,7 +206,7 @@ G_M19047_IG19:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             blr     x1
             b       G_M19047_IG05
                        ;; size=36 bbWeight=0 PerfScore 0.00
-G_M19047_IG20:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M19047_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x21]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -235,16 +223,16 @@ G_M19047_IG20:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs -[x0]
             b       G_M19047_IG03
                        ;; size=48 bbWeight=0 PerfScore 0.00
-RWD00     dd  G_M19047_IG13 - G_M19047_IG02
-           dd  G_M19047_IG15 - G_M19047_IG02
+RWD00    dd  G_M19047_IG11 - G_M19047_IG02
+           dd  G_M19047_IG13 - G_M19047_IG02
+           dd  G_M19047_IG12 - G_M19047_IG02
            dd  G_M19047_IG14 - G_M19047_IG02
-         dd  G_M19047_IG16 - G_M19047_IG02
-           dd  G_M19047_IG17 - G_M19047_IG02
+         dd  G_M19047_IG15 - G_M19047_IG02
            dd  G_M19047_IG04 - G_M19047_IG02
-         dd  G_M19047_IG18 - G_M19047_IG02
+         dd  G_M19047_IG16 - G_M19047_IG02
 
 
-; Total bytes of code 532, prolog size 24, PerfScore 45.68, instruction count 133, allocated bytes for code 532 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
+; Total bytes of code 508, prolog size 24, PerfScore 43.23, instruction count 127, allocated bytes for code 508 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -255,7 +243,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 133 (0x00085) Actual length = 532 (0x000214)
+  Function Length   : 127 (0x0007f) Actual length = 508 (0x0001fc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-4 (-3.33%) : 1429.dasm - Xunit.TestFrameworkOptions:GetValue[System.Nullable1[ubyte]](System.String):System.Nullable1[ubyte]:this (Tier0)
@@ -5,29 +5,28 @@
 ; partially interruptible
 ; Final local variable assignments
 ;
-;  V00 this         [V00    ] (  1,  1   )     ref  ->  [fp+0x38]  do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions>
-;  V01 arg1         [V01    ] (  1,  1   )     ref  ->  [fp+0x30]  do-not-enreg[] class-hnd <System.String>
-;  V02 loc0         [V02    ] (  1,  1   )     ref  ->  [fp+0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-;  V03 loc1         [V03    ] (  1,  1   )  struct ( 8) [fp+0x20]  do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[ubyte]>
+;  V00 this         [V00    ] (  1,  1   )     ref  ->  [fp+0x28]  do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions>
+;  V01 arg1         [V01    ] (  1,  1   )     ref  ->  [fp+0x20]  do-not-enreg[] class-hnd <System.String>
+;  V02 loc0         [V02    ] (  1,  1   )     ref  ->  [fp+0x18]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
+;  V03 loc1         [V03    ] (  1,  1   )  struct ( 8) [fp+0x10]  do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[ubyte]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05    ] (  1,  1   )  struct ( 8) [fp+0x18]  do-not-enreg[XS] addr-exposed "pseudo return buffer" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 48
+; Lcl frame size = 32
 
 G_M29704_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x40]!
+            stp     fp, lr, [sp, #-0x30]!
             mov     fp, sp
-            str     xzr, [fp, #0x28]   // [V02 loc0]
-            str     xzr, [fp, #0x20]   // [V03 loc1]
-            str     x0, [fp, #0x38]    // [V00 this]
-            str     x1, [fp, #0x30]    // [V01 arg1]
+            str     xzr, [fp, #0x18] // [V02 loc0]
+            str     xzr, [fp, #0x10]   // [V03 loc1]
+            str     x0, [fp, #0x28]    // [V00 this]
+            str     x1, [fp, #0x20]    // [V01 arg1]
                        ;; size=24 bbWeight=1 PerfScore 5.50
 G_M29704_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [fp, #0x38]  // [V00 this]
+            ldr     x0, [fp, #0x28]  // [V00 this]
             ; gcrRegs +[x0]
             ldr     x0, [x0, #0x08]
-            add     x2, fp, #40   // [V02 loc0]
-            ldr     x1, [fp, #0x30]    // [V01 arg1]
+            add     x2, fp, #24  // [V02 loc0]
+            ldr     x1, [fp, #0x20]    // [V01 arg1]
             ; gcrRegs +[x1]
             movz    x3, #0xD1FFAB1E      // code for <unknown method>
             movk    x3, #0xD1FFAB1E LSL #16
@@ -37,30 +36,31 @@ G_M29704_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             blr     x3
             ; gcrRegs -[x0-x1]
             cbz     w0, G_M29704_IG04
-            add     x0, fp, #24 // [V05 tmp1]
-            ldr     x2, [fp, #0x28]    // [V02 loc0]
-            ; gcrRegs +[x2]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_UNBOX_NULLABLE
-            ; gcrRegs -[x2]
-            ldr     w0, [fp, #0x18]    // [V05 tmp1]
-                       ;; size=72 bbWeight=1 PerfScore 24.00
+            ldr     x1, [fp, #0x18]  // [V02 loc0]
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_UNBOX
+            ; gcrRegs -[x1]
+            ; byrRegs +[x0]
+            ldrh    w0, [x0]
+            ; byrRegs -[x0]
+                       ;; size=68 bbWeight=1 PerfScore 24.50
 G_M29704_IG03:        ; bbWeight=1, epilog, nogc, extend
-            ldp     fp, lr, [sp], #0x40
+            ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 G_M29704_IG04:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            strh    wzr, [fp, #0x20]  // [V03 loc1]
-            ldr     w0, [fp, #0x20]    // [V03 loc1]
+            strh    wzr, [fp, #0x10] // [V03 loc1]
+            ldr     w0, [fp, #0x10]    // [V03 loc1]
                        ;; size=8 bbWeight=1 PerfScore 3.00
 G_M29704_IG05:        ; bbWeight=1, epilog, nogc, extend
-            ldp     fp, lr, [sp], #0x40
+            ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 120, prolog size 16, PerfScore 36.50, instruction count 30, allocated bytes for code 120 (MethodHash=9a568bf7) for method Xunit.TestFrameworkOptions:GetValue[System.Nullable`1[ubyte]](System.String):System.Nullable`1[ubyte]:this (Tier0)
+; Total bytes of code 116, prolog size 16, PerfScore 37.00, instruction count 29, allocated bytes for code 116 (MethodHash=9a568bf7) for method Xunit.TestFrameworkOptions:GetValue[System.Nullable`1[ubyte]](System.String):System.Nullable`1[ubyte]:this (Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -71,7 +71,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 30 (0x0001e) Actual length = 120 (0x000078)
+  Function Length   : 29 (0x0001d) Actual length = 116 (0x000074)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,7 +82,7 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
 
  
+0 (0.00%) : 4256.dasm - ComInterfaceGenerator.Unit.Tests.TargetSignatureTests+d__4:MoveNext():this (Tier0)
@@ -53,9 +53,11 @@ G_M11414_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #175
-            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+            bl      CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             ldr     x0, [x0]
@@ -81,7 +83,7 @@ G_M11414_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             str     x0, [fp, #0x20]    // [V11 tmp6]
@@ -90,9 +92,11 @@ G_M11414_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #175
-            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+            bl      CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             ldr     x0, [x0]
@@ -115,7 +119,8 @@ G_M11414_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #175
-            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+            bl      CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             ldr     x15, [fp, #0x20]   // [V11 tmp6]
             ; gcrRegs +[x15]
@@ -124,6 +129,7 @@ G_M11414_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x14, #0xD1FFAB1E LSL #32
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x15]
+            ; byrRegs -[x0]
             ldr     x0, [fp, #0x20]   // [V11 tmp6]
             ; gcrRegs +[x0]
             str     x0, [fp, #0x28]    // [V10 tmp5]
  
+48 (+33.33%) : 3522.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,90 +9,111 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  3,  2.56)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T00] (  5,  3.76)    long  ->   x1         single-def
-;  V02 arg1         [V02,T01] (  4,  3.56)   byref  ->  x19         single-def
+;  V00 this         [V00,T03] (  3,  2.56)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  4.52)    long  ->  x19         single-def
+;  V02 arg1         [V02,T01] (  4,  3.56)   byref  ->  x20         single-def
 ;  V03 loc0         [V03,T02] (  7,  5.23)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T04] (  4,  4.46)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T04] (  4,  4.46)     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T07] (  3,  2.23)    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T09] (  3,  2.23)    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  3.12)    long  ->   x0         "spilling expr"
-;  V11 rat2         [V11,T06] (  3,  2.50)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V11 rat2         [V11,T07] (  3,  2.50)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V12 rat3         [V12,T10] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V13 rat4         [V13,T06] (  3,  3.12)    long  ->   x0         "spilling expr"
+;  V14 rat5         [V14,T08] (  2,  1.78)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG08
+            cbnz    x0, G_M58319_IG11
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.56, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.56, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
-            ldr     x2, [x0, #0x08]
-            cmp     x2, #24
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
             ble     G_M58319_IG06
                        ;; size=16 bbWeight=0.56 PerfScore 4.18
-G_M58319_IG04:        ; bbWeight=0.45, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG04:        ; bbWeight=0.45, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ldr     x0, [x0, #0x18]
             cbz     x0, G_M58319_IG06
                        ;; size=8 bbWeight=0.45 PerfScore 1.78
-G_M58319_IG05:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG05:        ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG07
                        ;; size=4 bbWeight=0.36 PerfScore 0.36
-G_M58319_IG06:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG06:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M58319_IG07:        ; bbWeight=0.56, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG07:        ; bbWeight=0.56, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #32
+            ble     G_M58319_IG09
+                       ;; size=36 bbWeight=0.56 PerfScore 6.13
+G_M58319_IG08:        ; bbWeight=0.45, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x20]
+            cbnz    x0, G_M58319_IG10
+                       ;; size=8 bbWeight=0.45 PerfScore 1.78
+G_M58319_IG09:        ; bbWeight=0.20, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M58319_IG10:        ; bbWeight=0.56, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.56 PerfScore 3.90
-G_M58319_IG08:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.56 PerfScore 1.95
+G_M58319_IG11:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 144, prolog size 20, PerfScore 25.32, instruction count 36, allocated bytes for code 144 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 192, prolog size 20, PerfScore 31.39, instruction count 48, allocated bytes for code 192 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -103,7 +124,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
+  Function Length   : 48 (0x00030) Actual length = 192 (0x0000c0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -111,9 +132,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+48 (+33.33%) : 3952.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,88 +9,109 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] (  3,  3   )     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T02] (  5,  4.36)    long  ->   x1         single-def
-;  V02 arg1         [V02,T03] (  4,  4   )   byref  ->  x19         single-def
-;  V03 loc0         [V03,T01] (  7,  7   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T01] (  7,  5.72)    long  ->  x19         single-def
+;  V02 arg1         [V02,T03] (  4,  4   )   byref  ->  x20         single-def
+;  V03 loc0         [V03,T02] (  7,  7   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T00] (  4,  8   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T00] (  4,  8   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T07] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V11 rat2         [V11,T06] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V11 rat2         [V11,T07] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V12 rat3         [V12,T10] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V13 rat4         [V13,T05] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V14 rat5         [V14,T08] (  2,  3.20)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
-            ldr     x0, [x1, #0x38]
+            cbnz    x0, G_M58319_IG10
+            ldr     x0, [x19, #0x38]
             ; gcrRegs -[x0]
-            ldr     x2, [x0, #0x08]
-            cmp     x2, #24
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
             ble     G_M58319_IG05
                        ;; size=24 bbWeight=1 PerfScore 11.50
-G_M58319_IG03:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ldr     x0, [x0, #0x18]
             cbz     x0, G_M58319_IG05
                        ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M58319_IG04:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M58319_IG05:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M58319_IG06:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #32
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=1 PerfScore 11.00
+G_M58319_IG07:        ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x20]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M58319_IG08:        ; bbWeight=0.36, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M58319_IG09:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=1 PerfScore 7.00
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=1 PerfScore 3.50
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 144, prolog size 20, PerfScore 33.92, instruction count 36, allocated bytes for code 144 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 192, prolog size 20, PerfScore 45.20, instruction count 48, allocated bytes for code 192 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -101,7 +122,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
+  Function Length   : 48 (0x00030) Actual length = 192 (0x0000c0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -109,9 +130,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-20 (-20.83%) : 2671.dasm - Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:b_60(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
@@ -9,11 +9,9 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c>
-;  V01 arg1         [V01,T01] (  3,  3   )     ref  ->   x1         class-hnd single-def <System.Reflection.PropertyInfo>
+;  V01 arg1         [V01,T00] (  3,  3   )     ref  ->   x1         class-hnd single-def <System.Reflection.PropertyInfo>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T02] (  3,  4.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V04 tmp2         [V04,T03] (  3,  1.25)    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V05 tmp3         [V05,T00] (  5,  6.75)     ref  ->   x0         class-hnd "spilling QMark2" <<unknown class>>
+;  V03 tmp1         [V03,T01] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
@@ -21,7 +19,7 @@ G_M28645_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     fp, lr, [sp, #-0x10]!
             mov     fp, sp
                        ;; size=8 bbWeight=1 PerfScore 1.50
-G_M28645_IG02:        ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M28645_IG02:        ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x1]
             mov     x0, x1
             ; gcrRegs +[x0]
@@ -37,28 +35,19 @@ G_M28645_IG02:        ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
             blr     x3
             mov     x1, x0
             ; gcrRegs +[x1]
-            cbz     x0, G_M28645_IG05
-                       ;; size=48 bbWeight=1 PerfScore 9.50
-G_M28645_IG03:        ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #0xD1FFAB1E LSL #32
-            cmp     x2, x3
-            beq     G_M28645_IG05
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M28645_IG04:        ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            mov     x0, x3
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
-                       ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M28645_IG05:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+                      ;; size=60 bbWeight=1 PerfScore 11.00
+G_M28645_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 96, prolog size 8, PerfScore 14.69, instruction count 24, allocated bytes for code 96 (MethodHash=8b27901a) for method Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 14.50, instruction count 19, allocated bytes for code 76 (MethodHash=8b27901a) for method Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -69,7 +58,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 24 (0x00018) Actual length = 96 (0x000060)
+  Function Length   : 19 (0x00013) Actual length = 76 (0x00004c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-28 (-10.61%) : 342.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
@@ -10,120 +10,103 @@
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V01 tmp1         [V01,T00] (  8, 16   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V02 tmp2         [V02,T01] (  8, 16   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V03 tmp3         [V03,T02] (  8, 16   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V04 cse0         [V04,T03] (  4,  4   )    long  ->  x19         "CSE - aggressive"
-;  V05 cse1         [V05,T04] (  4,  4   )    long  ->  x21         "CSE - aggressive"
+;  V02 tmp2         [V02,T01] (  6, 12   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
+;  V03 tmp3         [V03,T02] (  6, 12   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
+;  V04 cse0         [V04,T03] (  4,  4   )     ref  ->  x19         "CSE - aggressive"
+;  V05 cse1         [V05,T04] (  4,  4   )   byref  ->  x21         "CSE - aggressive"
+;  V06 cse2         [V06,T05] (  4,  4   )   byref  ->  x22         "CSE - aggressive"
+;  V07 cse3         [V07,T06] (  4,  4   )    long  ->  x23         "CSE - aggressive"
 ;
 ; Lcl frame size = 8
 
 G_M2338_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
+            stp     fp, lr, [sp, #-0x40]!
             stp     x19, x20, [sp, #0x18]
-            str     x21, [sp, #0x28]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-                       ;; size=16 bbWeight=1 PerfScore 3.50
+                      ;; size=20 bbWeight=1 PerfScore 4.50
 G_M2338_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            movz    x19, #0xD1FFAB1E
-            movk    x19, #0xD1FFAB1E LSL #16
-            movk    x19, #0xD1FFAB1E LSL #32
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
-            ; gcrRegs +[x0]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            str     xzr, [x20, #0x10]
-            add     x0, x20, #24
-            ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
-            strb    wzr, [x20, #0x1C]
-            mov     x0, x20
-            ; gcrRegs +[x0]
-            ; byrRegs -[x0]
-            bl      <unknown method>
-            ; gcrRegs -[x0]
-            add     x14, x20, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     xzr, [x20, #0x10]
-            movz    x21, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
-            movk    x21, #0xD1FFAB1E LSL #16
-            movk    x21, #0xD1FFAB1E LSL #32
-            mov     x14, x21
-            ; byrRegs -[x14]
-            mov     x15, x20
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x20]
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
-            ; gcrRegs +[x0]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            str     xzr, [x20, #0x10]
-            add     x0, x20, #24
-            ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
-            strb    wzr, [x20, #0x1C]
-            mov     x0, x20
-            ; gcrRegs +[x0]
-            ; byrRegs -[x0]
-            bl      <unknown method>
-            ; gcrRegs -[x0]
-            add     x14, x20, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     x15, [x20, #0x10]
-            add     x14, x21, #8
-            ; byrRegs -[x14]
-            mov     x15, x20
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x20]
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_DBLROUND
             ; gcrRegs +[x0]
             mov     x19, x0
             ; gcrRegs +[x19]
-            str     xzr, [x19, #0x10]
-            add     x0, x19, #24
+            mov     x20, x19
+            ; gcrRegs +[x20]
+            str     xzr, [x20, #0x10]
+            add     x21, x20, #24
+            ; byrRegs +[x21]
+            mov     w0, #4
             ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
+            stlr    w0, [x21]
+            strb    wzr, [x20, #0x1C]
+            mov     x0, x20
+            ; gcrRegs +[x0]
+            bl      <unknown method>
+            ; gcrRegs -[x0]
+            add     x22, x20, #29
+            ; byrRegs +[x22]
+            mov     w14, #1
+            stlrb   w14, [x22]
+            str     xzr, [x20, #0x10]
+            movz    x23, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            movk    x23, #0xD1FFAB1E LSL #16
+            movk    x23, #0xD1FFAB1E LSL #32
+            mov     x14, x23
+            mov     x15, x20
+            ; gcrRegs +[x15]
+            bl      CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[x15 x20]
+            mov     x20, x19
+            ; gcrRegs +[x20]
+            str     xzr, [x20, #0x10]
+            mov     w0, #4
+            stlr    w0, [x21]
+            strb    wzr, [x20, #0x1C]
+            mov     x0, x20
+            ; gcrRegs +[x0]
+            bl      <unknown method>
+            ; gcrRegs -[x0]
+            mov     w14, #1
+            stlrb   w14, [x22]
+            str     x14, [x20, #0x10]
+            add     x14, x23, #8
+            mov     x15, x20
+            ; gcrRegs +[x15]
+            bl      CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[x15 x20]
+            str     xzr, [x19, #0x10]
+            mov     w0, #4
+            stlr    w0, [x21]
             strb    wzr, [x19, #0x1C]
             mov     x0, x19
             ; gcrRegs +[x0]
-            ; byrRegs -[x0]
             bl      <unknown method>
             ; gcrRegs -[x0]
-            add     x14, x19, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
+            ; byrRegs -[x21]
+            mov     w14, #1
+            stlrb   w14, [x22]
             mov     x14, #2
-            ; byrRegs -[x14]
             str     x14, [x19, #0x10]
-            add     x14, x21, #16
+            add     x14, x23, #16
             mov     x15, x19
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x15 x19]
-                     ;; size=232 bbWeight=1 PerfScore 41.00
+            ; byrRegs -[x22]
+                       ;; size=196 bbWeight=1 PerfScore 35.50
 G_M2338_IG03:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=20 bbWeight=1 PerfScore 6.00
 
-; Total bytes of code 264, prolog size 16, PerfScore 49.50, instruction count 66, allocated bytes for code 264 (MethodHash=536af6dd) for method Interop+Sys+FileDescriptors:.cctor() (FullOpts)
+; Total bytes of code 236, prolog size 20, PerfScore 46.00, instruction count 59, allocated bytes for code 236 (MethodHash=536af6dd) for method Interop+Sys+FileDescriptors:.cctor() (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +117,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 66 (0x00042) Actual length = 264 (0x000108)
+  Function Length   : 59 (0x0003b) Actual length = 236 (0x0000ec)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,9 +125,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
+    E6          save_next
     C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
-    E4          end
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
 
  
-32 (-9.41%) : 2942.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
@@ -12,11 +12,9 @@
 ;  V01 arg1         [V01,T02] (  4,  3.50)   byref  ->  x21         single-def
 ;  V02 arg2         [V02,T01] (  5,  3.50)   byref  ->  x20         single-def
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T04] (  3,  1.50)   ubyte  ->   x0         "Inline return value spill temp"
+;  V04 tmp1         [V04,T03] (  3,  1.50)   ubyte  ->   x0         "Inline return value spill temp"
 ;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]>
-;  V06 tmp3         [V06    ] (  7,  2.88)     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
-;  V07 tmp4         [V07,T05] (  3,  1.25)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V08 tmp5         [V08,T03] (  3,  2.25)     ref  ->  x15         class-hnd "spilling QMark2" <<unknown class>>
+;  V06 tmp3         [V06    ] (  4,  2   )     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
 ;
 ; Lcl frame size = 8
 
@@ -66,7 +64,7 @@ G_M30064_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20
             blr     x4
             ; gcrRegs -[x1]
             ; byrRegs -[x3]
-            cbz     w0, G_M30064_IG10
+            cbz     w0, G_M30064_IG07
                       ;; size=104 bbWeight=1 PerfScore 22.00
 G_M30064_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
             ldr     x0, [x19, #0x20]
@@ -81,80 +79,61 @@ G_M30064_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {
             ldr     x3, [x11]
             blr     x3
             ; gcrRegs -[x0 x19]
-            cbz     w0, G_M30064_IG07
+            cbz     w0, G_M30064_IG04
             ldr     x1, [fp, #0x10]   // [V06 tmp3]
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFARRAY
+            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
             ; gcrRegs -[x1] +[x0]
-            cbz     x0, G_M30064_IG07
-            ldr     x15, [fp, #0x10]   // [V06 tmp3]
-            ; gcrRegs +[x15]
-            mov     x0, x15
-            cbz     x0, G_M30064_IG06
-                       ;; size=80 bbWeight=0.50 PerfScore 10.25
-G_M30064_IG04:        ; bbWeight=0.25, gcrefRegs=8000 {x15}, byrefRegs=300000 {x20 x21}, byref, isz
-            ; gcrRegs -[x0]
-            ldr     x0, [fp, #0x10]    // [V06 tmp3]
-            ; gcrRegs +[x0]
-            ldr     x0, [x0]
-            ; gcrRegs -[x0]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            cmp     x0, x1
-            beq     G_M30064_IG06
-                       ;; size=28 bbWeight=0.25 PerfScore 2.00
-G_M30064_IG05:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
-            ; gcrRegs -[x15]
-            mov     x0, x1
+            cbz     x0, G_M30064_IG04
             ldr     x1, [fp, #0x10]   // [V06 tmp3]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movz    x0, #0xD1FFAB1E
+            ; gcrRegs -[x0]
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             mov     x15, x0
             ; gcrRegs +[x15]
-                     ;; size=16 bbWeight=0.12 PerfScore 0.50
-G_M30064_IG06:        ; bbWeight=0.50, gcrefRegs=8000 {x15}, byrefRegs=300000 {x20 x21}, byref
-            ; gcrRegs -[x0]
             mov     x14, x20
             ; byrRegs +[x14]
             bl      CORINFO_HELP_CHECKED_ASSIGN_REF
-            ; gcrRegs -[x15]
+            ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
             mov     w0, #1
-            b       G_M30064_IG08
-                       ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M30064_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
+            b       G_M30064_IG05
+                       ;; size=108 bbWeight=0.50 PerfScore 12.50
+G_M30064_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
             str     xzr, [x20]
             mov     w0, wzr
                        ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30064_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M30064_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
             str     xzr, [fp, #0x10]  // [V06 tmp3]
-            cbz     w0, G_M30064_IG10
+            cbz     w0, G_M30064_IG07
             mov     w0, #1
                        ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M30064_IG09:        ; bbWeight=0.50, epilog, nogc, extend
+G_M30064_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M30064_IG10:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, gcvars, byref
+G_M30064_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, gcvars, byref
             str     xzr, [x21]
             str     xzr, [x20]
             mov     w0, wzr
                        ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M30064_IG11:        ; bbWeight=0.50, epilog, nogc, extend
+G_M30064_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
 
-; Total bytes of code 340, prolog size 20, PerfScore 50.50, instruction count 85, allocated bytes for code 340 (MethodHash=d8648a8f) for method Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
+; Total bytes of code 308, prolog size 20, PerfScore 48.75, instruction count 77, allocated bytes for code 308 (MethodHash=d8648a8f) for method Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -165,7 +144,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 85 (0x00055) Actual length = 340 (0x000154)
+  Function Length   : 77 (0x0004d) Actual length = 308 (0x000134)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+44 (+33.33%) : 5540.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:CollectSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValueProvider1[System.Collections.Immutable.ImmutableArray1[System.__Canon]] (FullOpts)
@@ -8,55 +8,58 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.20)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T01] (  3,  6   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.BatchNode`1[System.__Canon]>
+;  V03 tmp1         [V03,T01] (  3,  6   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.BatchNode`1[System.__Canon]>
 ;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
 ;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp5         [V07    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V08 tmp6         [V08,T04] (  2,  2   )     ref  ->  x19         single-def "field V01.Node (fldOffset=0x0)" P-INDEP
-;  V09 tmp7         [V09,T05] (  2,  2   )   ubyte  ->  x20         single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-;  V10 tmp8         [V10,T06] (  2,  2   )     ref  ->   x0         single-def "field V05.Node (fldOffset=0x0)" P-INDEP
-;  V11 tmp9         [V11,T07] (  2,  2   )   ubyte  ->   x1         "field V05.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-;  V12 rat0         [V12,T03] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V13 rat1         [V13,T02] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V08 tmp6         [V08,T06] (  2,  2   )     ref  ->  x20         single-def "field V01.Node (fldOffset=0x0)" P-INDEP
+;  V09 tmp7         [V09,T07] (  2,  2   )   ubyte  ->  x21         single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+;  V10 tmp8         [V10,T08] (  2,  2   )     ref  ->   x0         single-def "field V05.Node (fldOffset=0x0)" P-INDEP
+;  V11 tmp9         [V11,T09] (  2,  2   )   ubyte  ->   x1         "field V05.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+;  V12 rat0         [V12,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V13 rat1         [V13,T02] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V14 rat2         [V14,T10] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V15 rat3         [V15,T03] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V16 rat4         [V16,T04] (  2,  3.20)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M15345_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
-            mov     x19, x1
-            ; gcrRegs +[x19]
-            mov     w20, w2
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M15345_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x0, #0x38]
-            ldr     x1, [x1, #0x10]
-            cbz     x1, G_M15345_IG04
+            str     x0, [fp, #0x18]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     w21, w2
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M15345_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M15345_IG04
                       ;; size=12 bbWeight=1 PerfScore 7.00
-G_M15345_IG03:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M15345_IG03:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             b       G_M15345_IG05
                        ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M15345_IG04:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M15345_IG04:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x1, x0
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M15345_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x0, x1
-            bl      CORINFO_HELP_NEWSFAST
+G_M15345_IG05:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            mov     x1, x19
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            mov     x1, x20
             ; gcrRegs +[x1]
             mov     x2, xzr
             mov     x3, xzr
@@ -65,19 +68,36 @@ G_M15345_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             movk    x4, #0xD1FFAB1E LSL #32
             ldr     x4, [x4]
             blr     x4
-            ; gcrRegs -[x0-x1 x19]
-            mov     x0, x21
+            ; gcrRegs -[x0-x1 x20]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M15345_IG07
+                       ;; size=56 bbWeight=1 PerfScore 16.00
+G_M15345_IG06:        ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M15345_IG08
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M15345_IG07:        ; bbWeight=0.36, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M15345_IG08:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x22
             ; gcrRegs +[x0]
-            uxtb    w1, w20
-                       ;; size=52 bbWeight=1 PerfScore 10.00
-G_M15345_IG06:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            uxtb    w1, w21
+                       ;; size=8 bbWeight=1 PerfScore 1.00
+G_M15345_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 28.90, instruction count 33, allocated bytes for code 132 (MethodHash=59b2c40e) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
+; Total bytes of code 176, prolog size 20, PerfScore 39.68, instruction count 44, allocated bytes for code 176 (MethodHash=59b2c40e) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -88,7 +108,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 44 (0x0002c) Actual length = 176 (0x0000b0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,9 +116,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+44 (+37.93%) : 4219.dasm - System.Linq.ImmutableArrayExtensions:SelectSystem.Canon,System.Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,70 +8,87 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.36)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-;  V02 arg1         [V02,T02] (  3,  3   )     ref  ->  x19         class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+;  V02 arg1         [V02,T03] (  3,  3   )     ref  ->  x20         class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V06 tmp3         [V06,T03] (  3,  3   )     ref  ->  x20         single-def "field V01.array (fldOffset=0x0)" P-INDEP
-;  V07 tmp4         [V07,T06] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V08 rat0         [V08,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V09 rat1         [V09,T01] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V10 rat2         [V10,T04] (  3,  4.48)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  x21         single-def "field V01.array (fldOffset=0x0)" P-INDEP
+;  V07 tmp4         [V07,T07] (  2,  4   )    long  ->   x0         "argument with side effect"
+;* V08 rat0         [V08,T08] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V09 rat1         [V09,T01] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V10 rat2         [V10,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V11 rat3         [V11,T02] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V12 rat4         [V12,T05] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M61273_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
-            stp     x19, x20, [sp, #0x20]
+            stp     x19, x20, [sp, #0x18]
+            str     x21, [sp, #0x28]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x20, x1
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x21, x1
+            ; gcrRegs +[x21]
+            mov     x20, x2
             ; gcrRegs +[x20]
-            mov     x19, x2
-            ; gcrRegs +[x19]
-                       ;; size=24 bbWeight=1 PerfScore 4.50
-G_M61273_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     wzr, [x20, #0x08]
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x10]
-            cmp     x2, #32
-            ble     G_M61273_IG05
-                       ;; size=20 bbWeight=1 PerfScore 10.50
-G_M61273_IG03:        ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x1, #0x20]
-            cbz     x2, G_M61273_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M61273_IG04:        ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            mov     x0, x2
-            b       G_M61273_IG06
-                       ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M61273_IG05:        ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+                      ;; size=32 bbWeight=1 PerfScore 6.00
+G_M61273_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M61273_IG04
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M61273_IG03:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-                       ;; size=16 bbWeight=0.36 PerfScore 0.90
-G_M61273_IG06:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            mov     x1, x20
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M61273_IG04:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     wzr, [x21, #0x08]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x10]
+            cmp     x1, #32
+            ble     G_M61273_IG07
+                       ;; size=20 bbWeight=1 PerfScore 10.50
+G_M61273_IG05:        ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x20]
+            cbz     x0, G_M61273_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M61273_IG06:        ; bbWeight=0.64, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            b       G_M61273_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M61273_IG07:        ; bbWeight=0.36, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M61273_IG08:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x1, x21
             ; gcrRegs +[x1]
-            mov     x2, x19
+            mov     x2, x20
             ; gcrRegs +[x2]
             movz    x3, #0xD1FFAB1E      // code for <unknown method>
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #0xD1FFAB1E LSL #32
             ldr     x3, [x3]
             blr     x3
-            ; gcrRegs -[x1-x2 x19-x20] +[x0]
+            ; gcrRegs -[x1-x2 x20-x21] +[x0]
                      ;; size=28 bbWeight=1 PerfScore 6.50
-G_M61273_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x20]
+G_M61273_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
+                      ;; size=16 bbWeight=1 PerfScore 5.00
 
-; Total bytes of code 116, prolog size 16, PerfScore 29.56, instruction count 29, allocated bytes for code 116 (MethodHash=f31810a6) for method System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 160, prolog size 20, PerfScore 40.52, instruction count 40, allocated bytes for code 160 (MethodHash=f31810a6) for method System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -82,7 +99,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 29 (0x0001d) Actual length = 116 (0x000074)
+  Function Length   : 40 (0x00028) Actual length = 160 (0x0000a0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -90,10 +107,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
-    E4          end
-    E4          end
 
  
+44 (+37.93%) : 11663.dasm - System.Linq.ImmutableArrayExtensions:WhereSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,70 +8,87 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.36)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-;  V02 arg1         [V02,T02] (  3,  3   )     ref  ->  x19         class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+;  V02 arg1         [V02,T03] (  3,  3   )     ref  ->  x20         class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V06 tmp3         [V06,T03] (  3,  3   )     ref  ->  x20         single-def "field V01.array (fldOffset=0x0)" P-INDEP
-;  V07 tmp4         [V07,T06] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V08 rat0         [V08,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V09 rat1         [V09,T01] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V10 rat2         [V10,T04] (  3,  4.48)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  x21         single-def "field V01.array (fldOffset=0x0)" P-INDEP
+;  V07 tmp4         [V07,T07] (  2,  4   )    long  ->   x0         "argument with side effect"
+;* V08 rat0         [V08,T08] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V09 rat1         [V09,T01] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V10 rat2         [V10,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V11 rat3         [V11,T02] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V12 rat4         [V12,T05] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M59151_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
-            stp     x19, x20, [sp, #0x20]
+            stp     x19, x20, [sp, #0x18]
+            str     x21, [sp, #0x28]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x20, x1
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x21, x1
+            ; gcrRegs +[x21]
+            mov     x20, x2
             ; gcrRegs +[x20]
-            mov     x19, x2
-            ; gcrRegs +[x19]
-                       ;; size=24 bbWeight=1 PerfScore 4.50
-G_M59151_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     wzr, [x20, #0x08]
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M59151_IG05
-                       ;; size=20 bbWeight=1 PerfScore 10.50
-G_M59151_IG03:        ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x1, #0x18]
-            cbz     x2, G_M59151_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M59151_IG04:        ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            mov     x0, x2
-            b       G_M59151_IG06
-                       ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M59151_IG05:        ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+                      ;; size=32 bbWeight=1 PerfScore 6.00
+G_M59151_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M59151_IG04
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M59151_IG03:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-                       ;; size=16 bbWeight=0.36 PerfScore 0.90
-G_M59151_IG06:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            mov     x1, x20
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M59151_IG04:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     wzr, [x21, #0x08]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M59151_IG07
+                       ;; size=20 bbWeight=1 PerfScore 10.50
+G_M59151_IG05:        ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M59151_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M59151_IG06:        ; bbWeight=0.64, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            b       G_M59151_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M59151_IG07:        ; bbWeight=0.36, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M59151_IG08:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x1, x21
             ; gcrRegs +[x1]
-            mov     x2, x19
+            mov     x2, x20
             ; gcrRegs +[x2]
             movz    x3, #0xD1FFAB1E      // code for System.Linq.Enumerable:Where[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon]
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #0xD1FFAB1E LSL #32
             ldr     x3, [x3]
             blr     x3
-            ; gcrRegs -[x1-x2 x19-x20] +[x0]
+            ; gcrRegs -[x1-x2 x20-x21] +[x0]
                      ;; size=28 bbWeight=1 PerfScore 6.50
-G_M59151_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x20]
+G_M59151_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
+                      ;; size=16 bbWeight=1 PerfScore 5.00
 
-; Total bytes of code 116, prolog size 16, PerfScore 29.56, instruction count 29, allocated bytes for code 116 (MethodHash=70f318f0) for method System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 160, prolog size 20, PerfScore 40.52, instruction count 40, allocated bytes for code 160 (MethodHash=70f318f0) for method System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -82,7 +99,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 29 (0x0001d) Actual length = 116 (0x000074)
+  Function Length   : 40 (0x00028) Actual length = 160 (0x0000a0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -90,10 +107,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
-    E4          end
-    E4          end
 
  
  
realworld.run.linux.arm64.checked.mch
-24 (-4.51%) : 96.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:GetListByName(ulong,int,ulong,int,int,int):System.Canon[]:this (FullOpts)
@@ -9,23 +9,23 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 10,  6.50)     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-;  V01 arg1         [V01,T09] (  3,  2.50)    long  ->   x1         single-def
-;  V02 arg2         [V02,T05] (  4,  3.50)     int  ->   x2         single-def
-;  V03 arg3         [V03,T06] (  4,  3.50)    long  ->  x21         single-def
-;  V04 arg4         [V04,T07] (  4,  3.50)     int  ->  x22         single-def
-;  V05 arg5         [V05,T08] (  3,  3   )     int  ->  x23         single-def
-;  V06 arg6         [V06,T02] (  4,  4   )     int  ->  x20         single-def
+;  V01 arg1         [V01,T08] (  3,  2.50)    long  ->   x1         single-def
+;  V02 arg2         [V02,T04] (  4,  3.50)     int  ->   x2         single-def
+;  V03 arg3         [V03,T05] (  4,  3.50)    long  ->  x21         single-def
+;  V04 arg4         [V04,T06] (  4,  3.50)     int  ->  x22         single-def
+;  V05 arg5         [V05,T07] (  3,  3   )     int  ->  x23         single-def
+;  V06 arg6         [V06,T01] (  4,  4   )     int  ->  x20         single-def
 ;  V07 loc0         [V07    ] ( 10,  6.50)  struct (24) [fp+0x18]  do-not-enreg[XSF] addr-exposed ld-addr-op <System.RuntimeType+RuntimeTypeCache+Filter>
-;  V08 loc1         [V08,T03] ( 10,  5.62)     ref  ->  x21         class-hnd <<unknown class>>
+;  V08 loc1         [V08,T03] (  9,  5.50)     ref  ->  x21         class-hnd <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T11] (  4,  2.75)    long  ->   x1         "spilling helperCall"
-;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V12 tmp3         [V12,T01] (  5,  6.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.__Canon[]>
-;* V13 tmp4         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-;  V14 tmp5         [V14,T12] (  2,  2   )    long  ->  x21         "field V13.m_pStringHeap (fldOffset=0x0)" P-INDEP
-;  V15 tmp6         [V15,T13] (  2,  2   )     int  ->  x22         "field V13.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-;  V16 rat0         [V16,T10] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V17 rat1         [V17,T04] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp2         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
+;  V12 tmp3         [V12,T12] (  2,  2   )    long  ->  x21         "field V11.m_pStringHeap (fldOffset=0x0)" P-INDEP
+;  V13 tmp4         [V13,T13] (  2,  2   )     int  ->  x22         "field V11.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+;  V14 tmp5         [V14,T11] (  2,  4   )    long  ->   x0         "argument with side effect"
+;  V15 rat0         [V15,T09] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V16 rat1         [V16,T10] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V17 rat2         [V17,T02] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -192,38 +192,26 @@ G_M19047_IG13:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             ldr     x0, [x19]
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M19047_IG15
+            ldr     x2, [x1, #0x18]
+            cbz     x2, G_M19047_IG15
                       ;; size=20 bbWeight=1 PerfScore 13.00
 G_M19047_IG14:        ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x2
             b       G_M19047_IG16
-                     ;; size=4 bbWeight=0.80 PerfScore 0.80
+                        ;; size=8 bbWeight=0.80 PerfScore 1.20
 G_M19047_IG15:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            mov     x1, x0
-                       ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x21
-            ; gcrRegs +[x0]
-            cbz     x0, G_M19047_IG19
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19047_IG17:        ; bbWeight=0.25, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            cmp     x2, x1
-            beq     G_M19047_IG19
-                       ;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M19047_IG18:        ; bbWeight=0.12, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x1
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
+                       ;; size=16 bbWeight=0.20 PerfScore 0.50
+G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             mov     x1, x21
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1 x21] +[x0]
-                       ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M19047_IG19:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+                     ;; size=8 bbWeight=1 PerfScore 1.50
+G_M19047_IG17:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
@@ -239,7 +227,7 @@ RWD00   dd  G_M19047_IG05 - G_M19047_IG02
            dd  G_M19047_IG10 - G_M19047_IG02
 
 
-; Total bytes of code 532, prolog size 24, PerfScore 81.02, instruction count 133, allocated bytes for code 532 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
+; Total bytes of code 508, prolog size 24, PerfScore 79.95, instruction count 127, allocated bytes for code 508 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -250,7 +238,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 133 (0x00085) Actual length = 532 (0x000214)
+  Function Length   : 127 (0x0007f) Actual length = 508 (0x0001fc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-20 (-3.70%) : 401.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object
@@ -10,23 +10,21 @@
 ;
 ;  V00 arg0         [V00,T00] (  9,  6   )     ref  ->  x19         class-hnd single-def <System.RuntimeType>
 ;  V01 arg1         [V01,T01] (  8,  5   )     int  ->  x20         single-def
-;* V02 loc0         [V02,T12] (  0,  0   )   ubyte  ->  zero-ref   
-;  V03 loc1         [V03,T06] (  3,  2   )   ubyte  ->  x21        
+;* V02 loc0         [V02,T11] (  0,  0   )   ubyte  ->  zero-ref   
+;  V03 loc1         [V03,T04] (  3,  2   )   ubyte  ->  x21        
 ;* V04 loc2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Object[]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T05] (  3,  2.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T13] (  3,  1.25)    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T03] (  5,  3.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.Object[]>
-;  V09 tmp4         [V09,T07] (  3,  1.50)     ref  ->   x0        
-;  V10 tmp5         [V10,T08] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-;  V11 tmp6         [V11,T04] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V12 tmp7         [V12,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
-;* V13 tmp8         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
-;* V14 tmp9         [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V15 tmp10        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V16 tmp11        [V16,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
-;  V17 cse0         [V17,T10] (  3,  1.50)    long  ->   x0         "CSE - moderate"
-;  V18 cse1         [V18,T09] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V06 tmp1         [V06,T06] (  3,  1.50)     ref  ->   x0        
+;  V07 tmp2         [V07,T07] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+;  V08 tmp3         [V08,T03] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V09 tmp4         [V09,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+;* V10 tmp5         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
+;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;* V12 tmp7         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;  V13 tmp8         [V13,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
+;  V14 tmp9         [V14,T05] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V15 cse0         [V15,T09] (  3,  1.50)    long  ->   x0         "CSE - moderate"
+;  V16 cse1         [V16,T08] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
 ;
 ; Lcl frame size = 8
 
@@ -94,7 +92,7 @@ G_M32569_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             b       G_M32569_IG07
@@ -105,16 +103,18 @@ G_M32569_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #29
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x0, [x1]
             ; gcrRegs +[x0]
+            ; byrRegs -[x0]
                        ;; size=36 bbWeight=0.50 PerfScore 3.75
 G_M32569_IG07:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                      ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
@@ -124,10 +124,10 @@ G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs -[x19] +[x0]
             ; gcr arg pop 0
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=32 bbWeight=0.50 PerfScore 3.00
 G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
@@ -135,18 +135,20 @@ G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #30
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             ldr     x0, [x0]
             ; gcrRegs +[x0]
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=40 bbWeight=0.50 PerfScore 4.25
 G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
-            cbz     w20, G_M32569_IG14
+            cbz     w20, G_M32569_IG11
             mov     x0, x19
             ; gcrRegs +[x0]
             mov     w1, w20
@@ -159,43 +161,32 @@ G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            cbz     x0, G_M32569_IG13
-                       ;; size=40 bbWeight=0.50 PerfScore 4.50
-G_M32569_IG11:        ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #0xD1FFAB1E LSL #32
-            cmp     x2, x3
-            beq     G_M32569_IG13
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M32569_IG12:        ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            mov     x0, x3
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-                      ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            b       G_M32569_IG16
+                       ;; size=56 bbWeight=0.50 PerfScore 5.75
+G_M32569_IG11:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
             ldr     x0, [x19, #0x10]
-            cbz     x0, G_M32569_IG16
+            cbz     x0, G_M32569_IG13
             bl      <unknown method>
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
             ; gcrRegs +[x20]
-            cbz     x20, G_M32569_IG16
+            cbz     x20, G_M32569_IG13
             ldr     x0, [x20]
             ; gcrRegs -[x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            beq     G_M32569_IG15
+            beq     G_M32569_IG12
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -209,10 +200,10 @@ G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcrRegs -[x0 x19]
             ; gcr arg pop 0
                        ;; size=80 bbWeight=0.50 PerfScore 10.00
-G_M32569_IG15:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG17
+G_M32569_IG12:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M32569_IG14
                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20] +[x19]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -226,7 +217,7 @@ G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             mov     x20, x0
             ; gcrRegs +[x20]
                        ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -236,14 +227,14 @@ G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             ldr     x1, [x1]
             ldr     wzr, [x0]
                        ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M32569_IG18:        ; bbWeight=0.50, epilog, nogc, extend
+G_M32569_IG15:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x1
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x20]
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
@@ -251,7 +242,7 @@ G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
 
-; Total bytes of code 540, prolog size 24, PerfScore 64.94, instruction count 135, allocated bytes for code 540 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
+; Total bytes of code 520, prolog size 24, PerfScore 64.00, instruction count 130, allocated bytes for code 520 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -262,7 +253,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 135 (0x00087) Actual length = 540 (0x00021c)
+  Function Length   : 130 (0x00082) Actual length = 520 (0x000208)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-16 (-1.76%) : 14535.dasm - System.Linq.Enumerable:ContainsSystem.__Canon:ubyte (FullOpts)
@@ -7,97 +7,91 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T12] ( 15, 10.84)    long  ->  x21         single-def
-;  V01 arg0         [V01,T15] (  5,  5   )     ref  ->  x22         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V02 arg1         [V02,T07] (  4, 18   )     ref  ->  x19         class-hnd single-def <System.__Canon>
-;  V03 arg2         [V03,T11] (  4, 11   )     ref  ->  x20         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
-;  V04 loc0         [V04,T05] (  7, 20   )     ref  ->  [fp+0x20]  class-hnd EH-live spill-single-def <<unknown class>>
-;  V05 loc1         [V05,T09] (  2, 16   )     ref  ->  x21         class-hnd <System.__Canon>
-;  V06 loc2         [V06,T32] (  3,  3   )   ubyte  ->  [fp+0x2C]  do-not-enreg[Z] EH-live
-;  V07 loc3         [V07,T06] (  7, 20   )     ref  ->  [fp+0x18]  class-hnd EH-live spill-single-def <<unknown class>>
-;  V08 loc4         [V08,T10] (  2, 16   )     ref  ->   x1         class-hnd <System.__Canon>
+;  V00 TypeCtx      [V00,T00] ( 15, 48.92)    long  ->  x19         single-def
+;  V01 arg0         [V01,T21] (  5,  5   )     ref  ->  x22         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V02 arg1         [V02,T17] (  4, 18   )     ref  ->  x20         class-hnd single-def <System.__Canon>
+;  V03 arg2         [V03,T20] (  4, 11   )     ref  ->  x21         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+;  V04 loc0         [V04,T15] (  7, 20   )     ref  ->  [fp+0x18]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V05 loc1         [V05,T18] (  2, 16   )     ref  ->  x22         class-hnd <System.__Canon>
+;  V06 loc2         [V06,T26] (  3,  3   )   ubyte  ->  [fp+0x24]  do-not-enreg[Z] EH-live
+;  V07 loc3         [V07,T16] (  7, 20   )     ref  ->  [fp+0x10]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V08 loc4         [V08,T19] (  2, 16   )     ref  ->  x22         class-hnd <System.__Canon>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V11 tmp2         [V11,T16] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V11 tmp2         [V11,T22] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V12 tmp3         [V12    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V13 tmp4         [V13,T01] (  3, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V13 tmp4         [V13,T01] (  4, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V15 tmp6         [V15,T02] (  3, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V15 tmp6         [V15,T02] (  4, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V16 tmp7         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V17 tmp8         [V17,T17] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V17 tmp8         [V17,T23] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V18 tmp9         [V18    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V19 tmp10        [V19,T03] (  3, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V19 tmp10        [V19,T03] (  4, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V20 tmp11        [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V21 tmp12        [V21,T00] (  3, 48   )     ref  ->   x0         "argument with side effect"
-;  V22 PSPSym       [V22,T33] (  1,  1   )    long  ->  [fp+0x38]  do-not-enreg[V] "PSPSym"
-;  V23 cse0         [V23,T08] (  4, 18   )    long  ->  x24         hoist multi-def "CSE - aggressive"
-;  V24 cse1         [V24,T13] (  2,  9   )    long  ->  x22         hoist "CSE - aggressive"
-;  V25 cse2         [V25,T14] (  2,  9   )    long  ->  x22         hoist "CSE - aggressive"
-;  V26 cse3         [V26,T04] ( 12, 26   )    long  ->  x23         multi-def "CSE - aggressive"
-;  V27 rat0         [V27,T18] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V28 rat1         [V28,T28] (  3,  4   )    long  ->  x24         "runtime lookup"
-;  V29 rat2         [V29,T19] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V30 rat3         [V30,T24] (  3,  4.48)    long  ->  x24         "fgMakeTemp is creating a new local variable"
-;  V31 rat4         [V31,T29] (  3,  4   )    long  ->  x22         "runtime lookup"
-;  V32 rat5         [V32,T20] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V33 rat6         [V33,T25] (  3,  4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;  V34 rat7         [V34,T21] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V35 rat8         [V35,T30] (  3,  4   )    long  ->  x24         "runtime lookup"
-;  V36 rat9         [V36,T22] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V37 rat10        [V37,T26] (  3,  4.48)    long  ->  x24         "fgMakeTemp is creating a new local variable"
-;  V38 rat11        [V38,T31] (  3,  4   )    long  ->  x22         "runtime lookup"
-;  V39 rat12        [V39,T23] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V40 rat13        [V40,T27] (  3,  4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
+;  V21 tmp12        [V21,T04] (  3, 48   )     ref  ->   x0         "argument with side effect"
+;  V22 PSPSym       [V22,T27] (  1,  1   )    long  ->  [fp+0x30]  do-not-enreg[V] "PSPSym"
+;  V23 cse0         [V23,T14] ( 12, 26   )    long  ->  x23         multi-def "CSE - aggressive"
+;  V24 rat0         [V24,T24] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V25 rat1         [V25,T05] (  3, 44.80)    long  ->   x0         "spilling expr"
+;  V26 rat2         [V26,T09] (  3, 35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V27 rat3         [V27,T13] (  3, 32   )    long  ->   x0         "runtime lookup"
+;  V28 rat4         [V28,T06] (  3, 44.80)    long  ->   x0         "spilling expr"
+;  V29 rat5         [V29,T10] (  3, 35.84)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V30 rat6         [V30,T25] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V31 rat7         [V31,T07] (  3, 44.80)    long  ->   x0         "spilling expr"
+;  V32 rat8         [V32,T11] (  3, 35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V33 rat9         [V33,T08] (  3, 44.80)    long  ->   x0         "spilling expr"
+;  V34 rat10        [V34,T12] (  3, 35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 48
+; Lcl frame size = 40
 
 G_M26627_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x70]!
-            stp     x19, x20, [sp, #0x40]
-            stp     x21, x22, [sp, #0x50]
-            stp     x23, x24, [sp, #0x60]
+            stp     fp, lr, [sp, #-0x60]!
+            stp     x19, x20, [sp, #0x38]
+            stp     x21, x22, [sp, #0x48]
+            str     x23, [sp, #0x58]
             mov     fp, sp
-            add     x4, sp, #112
-            stp     x0, x4, [fp, #0x30]    // [V22 PSPSym]
-            mov     x21, x0
+            add     x4, sp, #96
+            stp     x0, x4, [fp, #0x28]    // [V22 PSPSym]
+            mov     x19, x0
             mov     x22, x1
             ; gcrRegs +[x22]
-            mov     x19, x2
-            ; gcrRegs +[x19]
-            mov     x20, x3
+            mov     x20, x2
             ; gcrRegs +[x20]
+            mov     x21, x3
+            ; gcrRegs +[x21]
                        ;; size=44 bbWeight=1 PerfScore 8.00
-G_M26627_IG02:        ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
-            cbz     x22, G_M26627_IG42
-            cbnz    x20, G_M26627_IG20
-            ldr     x0, [x21, #0x38]
+G_M26627_IG02:        ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+            cbz     x22, G_M26627_IG44
+            cbnz    x21, G_M26627_IG21
+            ldr     x0, [x19, #0x38]
             ldr     x11, [x0, #0x10]
             cbz     x11, G_M26627_IG04
                        ;; size=20 bbWeight=1 PerfScore 9.00
-G_M26627_IG03:        ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x20]
+G_M26627_IG03:        ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x21]
             b       G_M26627_IG05
                        ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M26627_IG04:        ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x21
+G_M26627_IG04:        ; bbWeight=0.20, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M26627_IG05:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M26627_IG05:        ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
             mov     x0, x22
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
             ; gcrRegs -[x22]
             ; gcr arg pop 0
-            str     x0, [fp, #0x20]   // [V04 loc0]
+            str     x0, [fp, #0x18]  // [V04 loc0]
             ; GC ptr vars +{V04}
                        ;; size=16 bbWeight=1 PerfScore 5.50
-G_M26627_IG06:        ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26627_IG06:        ; bbWeight=1, gcVars=0000000000008000 {V04}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
             movz    x23, #0xD1FFAB1E
             movk    x23, #0xD1FFAB1E LSL #16
             movk    x23, #0xD1FFAB1E LSL #32
@@ -106,61 +100,60 @@ G_M26627_IG06:        ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=800
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M26627_IG17
-            ldr     x0, [x21, #0x38]
+            cbz     w0, G_M26627_IG18
+                       ;; size=28 bbWeight=1 PerfScore 7.00
+G_M26627_IG07:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
             ldr     x1, [x0, #0x08]
             cmp     x1, #24
-            ble     G_M26627_IG09
-                       ;; size=44 bbWeight=1 PerfScore 14.50
-G_M26627_IG07:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x24, [x0, #0x18]
-            cbz     x24, G_M26627_IG09
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M26627_IG08:        ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            b       G_M26627_IG10
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M26627_IG09:        ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x0, x21
+            ble     G_M26627_IG10
+                       ;; size=16 bbWeight=8 PerfScore 60.00
+G_M26627_IG08:        ; bbWeight=6.40, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x11, [x0, #0x18]
+            cbz     x11, G_M26627_IG10
+                       ;; size=8 bbWeight=6.40 PerfScore 25.60
+G_M26627_IG09:        ; bbWeight=5.12, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M26627_IG11
+                       ;; size=4 bbWeight=5.12 PerfScore 5.12
+G_M26627_IG10:        ; bbWeight=2.88, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
-            mov     x24, x0
-                       ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M26627_IG10:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x21, #0x38]
-            ldr     x1, [x0, #0x08]
-            cmp     x1, #40
-            ble     G_M26627_IG13
-                       ;; size=16 bbWeight=1 PerfScore 7.50
-G_M26627_IG11:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x0, #0x28]
-            cbz     x22, G_M26627_IG13
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M26627_IG12:        ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            b       G_M26627_IG14
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M26627_IG13:        ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x0, x21
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            ; gcr arg pop 0
-            mov     x22, x0
-                       ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M26627_IG14:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            mov     x11, x24
-            ldr     x0, [fp, #0x20]    // [V04 loc0]
+            mov     x11, x0
+                       ;; size=24 bbWeight=2.88 PerfScore 10.08
+G_M26627_IG11:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [fp, #0x18]    // [V04 loc0]
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
             ; gcr arg pop 0
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            mov     x0, x22
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            ldr     x0, [x19, #0x38]
             ; gcrRegs -[x0]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #40
+            ble     G_M26627_IG14
+                       ;; size=32 bbWeight=8 PerfScore 112.00
+G_M26627_IG12:        ; bbWeight=6.40, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x28]
+            cbz     x0, G_M26627_IG14
+                       ;; size=8 bbWeight=6.40 PerfScore 25.60
+G_M26627_IG13:        ; bbWeight=5.12, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+            b       G_M26627_IG15
+                       ;; size=4 bbWeight=5.12 PerfScore 5.12
+G_M26627_IG14:        ; bbWeight=2.88, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=20 bbWeight=2.88 PerfScore 8.64
...
  
+40 (+21.28%) : 2662.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTailSystem.__Canon:Microsoft.FSharp.Collections.FSharpList`1System.__Canon
@@ -7,62 +7,78 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T09] (  5,  7.80)    long  ->  x20         single-def
-;  V01 arg0         [V01,T06] (  5, 11   )     ref  ->  x19         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V00 TypeCtx      [V00,T08] (  7, 12.60)    long  ->  x19         single-def
+;  V01 arg0         [V01,T09] (  5, 11   )     ref  ->  x20         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;  V02 arg1         [V02,T02] (  5, 18   )     ref  ->   x2         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;* V03 loc0         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V04 loc1         [V04,T10] (  2,  8   )     ref  ->  x21         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V05 loc2         [V05,T11] (  2,  8   )     ref  ->  x22         class-hnd <System.__Canon>
-;  V06 loc3         [V06,T07] (  3, 12   )     ref  ->   x0         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V04 loc1         [V04,T11] (  2,  8   )     ref  ->  x21         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V05 loc2         [V05,T12] (  2,  8   )     ref  ->  x22         class-hnd <System.__Canon>
+;  V06 loc3         [V06,T10] (  3, 12   )     ref  ->   x0         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V08 tmp1         [V08,T12] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V08 tmp1         [V08,T04] (  3, 16   )    long  ->  x23         "spilling helperCall"
 ;* V09 tmp2         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp3         [V10,T00] (  3, 24   )    long  ->  x23         "argument with side effect"
-;  V11 tmp4         [V11,T05] (  2, 16   )     ref  ->   x2         "argument with side effect"
-;  V12 cse0         [V12,T08] (  2,  8   )    long  ->  x23         "CSE - aggressive"
-;  V13 cse1         [V13,T03] (  3, 20   )     ref  ->  x21         "CSE - aggressive"
-;  V14 rat0         [V14,T04] (  3, 16   )    long  ->  x23         "runtime lookup"
-;  V15 rat1         [V15,T01] (  3, 22.40)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V10 tmp3         [V10,T07] (  2, 16   )    long  ->  x24         "argument with side effect"
+;  V11 tmp4         [V11,T06] (  2, 16   )     ref  ->   x2         "argument with side effect"
+;  V12 cse0         [V12,T03] (  3, 20   )     ref  ->  x21         "CSE - aggressive"
+;  V13 rat0         [V13,T00] (  3, 22.40)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V14 rat1         [V14,T05] (  3, 16   )    long  ->  x24         "runtime lookup"
+;  V15 rat2         [V15,T01] (  3, 22.40)    long  ->  x24         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M63806_IG01:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x18]
-            stp     x21, x22, [sp, #0x28]
-            str     x23, [sp, #0x38]
+            stp     fp, lr, [sp, #-0x50]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
+            stp     x23, x24, [sp, #0x40]
             mov     fp, sp
-            str     x0, [fp, #0x10]
-            mov     x20, x0
-            mov     x19, x1
-            ; gcrRegs +[x19]
+            str     x0, [fp, #0x18]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
                        ;; size=32 bbWeight=8 PerfScore 52.00
-G_M63806_IG02:        ; bbWeight=8, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+G_M63806_IG02:        ; bbWeight=8, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x2]
             ldr     x21, [x2, #0x10]
             ; gcrRegs +[x21]
-            cbz     x21, G_M63806_IG07
+            cbz     x21, G_M63806_IG10
                        ;; size=8 bbWeight=8 PerfScore 32.00
-G_M63806_IG03:        ; bbWeight=4, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M63806_IG03:        ; bbWeight=4, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=0000 {}, byref, isz
             ldr     x22, [x2, #0x08]
             ; gcrRegs +[x22]
-            ldr     x0, [x20, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x23, [x0, #0x10]
             cbz     x23, G_M63806_IG05
                        ;; size=16 bbWeight=4 PerfScore 40.00
-G_M63806_IG04:        ; bbWeight=3.20, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
+G_M63806_IG04:        ; bbWeight=3.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x2]
             b       G_M63806_IG06
                        ;; size=4 bbWeight=3.20 PerfScore 3.20
-G_M63806_IG05:        ; bbWeight=0.80, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x20
+G_M63806_IG05:        ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x23, x0
                        ;; size=24 bbWeight=0.80 PerfScore 2.80
-G_M63806_IG06:        ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
+G_M63806_IG06:        ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x24, [x0, #0x10]
+            cbz     x24, G_M63806_IG08
+                       ;; size=12 bbWeight=4 PerfScore 28.00
+G_M63806_IG07:        ; bbWeight=3.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+            b       G_M63806_IG09
+                       ;; size=4 bbWeight=3.20 PerfScore 3.20
+G_M63806_IG08:        ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            mov     x24, x0
+                       ;; size=24 bbWeight=0.80 PerfScore 2.80
+G_M63806_IG09:        ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
             mov     x0, x23
             movz    x1, #0xD1FFAB1E      // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
             movk    x1, #0xD1FFAB1E LSL #16
@@ -72,7 +88,7 @@ G_M63806_IG06:        ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=00
             ; gcrRegs +[x0]
             mov     x2, x0
             ; gcrRegs +[x2]
-            mov     x0, x23
+            mov     x0, x24
             ; gcrRegs -[x0]
             mov     x1, x22
             ; gcrRegs +[x1]
@@ -82,33 +98,33 @@ G_M63806_IG06:        ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=00
             ldr     x3, [x3]
             blr     x3
             ; gcrRegs -[x1-x2 x22] +[x0]
-            add     x14, x19, #16
+            add     x14, x20, #16
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x19]
+            ; gcrRegs -[x15 x20]
             ; byrRegs -[x14]
             mov     x2, x21
             ; gcrRegs +[x2]
-            mov     x19, x0
-            ; gcrRegs +[x19]
+            mov     x20, x0
+            ; gcrRegs +[x20]
             b       G_M63806_IG02
                        ;; size=80 bbWeight=4 PerfScore 68.00
-G_M63806_IG07:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M63806_IG10:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x2 x21]
-            mov     x0, x19
+            mov     x0, x20
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=1 PerfScore 0.50
-G_M63806_IG08:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x40
+G_M63806_IG11:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x23, x24, [sp, #0x40]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x50
             ret     lr
-                        ;; size=20 bbWeight=1 PerfScore 6.00
+                      ;; size=20 bbWeight=1 PerfScore 5.00
 
-; Total bytes of code 188, prolog size 24, PerfScore 204.50, instruction count 47, allocated bytes for code 188 (MethodHash=873c06c1) for method Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
+; Total bytes of code 228, prolog size 24, PerfScore 237.50, instruction count 57, allocated bytes for code 228 (MethodHash=873c06c1) for method Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -119,7 +135,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 47 (0x0002f) Actual length = 188 (0x0000bc)
+  Function Length   : 57 (0x00039) Actual length = 228 (0x0000e4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -127,9 +143,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    89          save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
+    E4          end
     E4          end
 
  
+44 (+32.35%) : 9790.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastVSystem.__Canon:Microsoft.FSharp.Core.FSharpValueOption`1System.__Canon
@@ -8,10 +8,10 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T02] (  5,  3.60)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T02] (  7,  4.20)    long  ->   x0         single-def
 ;  V01 arg0         [V01,T01] (  5, 14.50)     ref  ->   x1         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;* V02 loc0         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V03 loc1         [V03,T06] (  2,  1   )     ref  ->   x0         class-hnd single-def <System.__Canon>
+;  V03 loc1         [V03,T07] (  2,  1   )     ref  ->  x19         class-hnd single-def <System.__Canon>
 ;* V04 loc2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -19,25 +19,28 @@
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
 ;* V10 tmp5         [V10    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
-;  V11 tmp6         [V11,T07] (  2,  1   )     ref  ->   x0         single-def "field V07.item (fldOffset=0x0)" P-INDEP
-;  V12 tmp7         [V12,T09] (  2,  1   )     int  ->   x1         single-def "field V07._tag (fldOffset=0x8)" P-INDEP
+;  V11 tmp6         [V11,T08] (  2,  1   )     ref  ->   x0         single-def "field V07.item (fldOffset=0x0)" P-INDEP
+;  V12 tmp7         [V12,T10] (  2,  1   )     int  ->   x1         single-def "field V07._tag (fldOffset=0x8)" P-INDEP
 ;* V13 tmp8         [V13    ] (  0,  0   )     ref  ->  zero-ref    "field V09.item (fldOffset=0x0)" P-DEP
 ;* V14 tmp9         [V14    ] (  0,  0   )     int  ->  zero-ref    "field V09._tag (fldOffset=0x8)" P-DEP
-;  V15 tmp10        [V15,T08] (  2,  1   )     ref  ->   x0         single-def "field V10.item (fldOffset=0x0)" P-INDEP
-;  V16 tmp11        [V16,T10] (  2,  1   )     int  ->   x1         single-def "field V10._tag (fldOffset=0x8)" P-INDEP
-;  V17 tmp12        [V17,T05] (  3,  1.50)  struct (16) [fp+0x18]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
+;  V15 tmp10        [V15,T09] (  2,  1   )     ref  ->   x0         single-def "field V10.item (fldOffset=0x0)" P-INDEP
+;  V16 tmp11        [V16,T11] (  2,  1   )     int  ->   x1         single-def "field V10._tag (fldOffset=0x8)" P-INDEP
+;  V17 tmp12        [V17,T06] (  3,  1.50)  struct (16) [fp+0x10]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
 ;  V18 cse0         [V18,T00] (  4, 24   )     ref  ->   x2         "CSE - aggressive"
-;  V19 rat0         [V19,T04] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V19 rat0         [V19,T05] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V20 rat1         [V20,T03] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V21 rat2         [V21,T12] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V22 rat3         [V22,T04] (  2,  2   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 32
+; Lcl frame size = 24
 
-G_M49887_IG01:        ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M49887_IG01:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
+            str     x19, [sp, #0x28]
             mov     fp, sp
-            stp     xzr, xzr, [fp, #0x18]    // [V17 tmp12], [V17 tmp12+0x08]
-            str     x0, [fp, #0x28]
-                       ;; size=16 bbWeight=8 PerfScore 28.00
+            stp     xzr, xzr, [fp, #0x10]    // [V17 tmp12], [V17 tmp12+0x08]
+            str     x0, [fp, #0x20]
+                       ;; size=20 bbWeight=8 PerfScore 36.00
 G_M49887_IG02:        ; bbWeight=8, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x1]
             ldr     x2, [x1, #0x10]
@@ -64,7 +67,7 @@ G_M49887_IG06:        ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
             mov     x1, x0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
@@ -77,38 +80,54 @@ G_M49887_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             blr     x1
             ; gcrRegs +[x0]
             ; gcr arg pop 0
-            stp     x0, x1, [fp, #0x18]   // [V17 tmp12], [V17 tmp12+0x08]
-            ldr     x0, [fp, #0x18]    // [V17 tmp12]
-            ldr     w1, [fp, #0x20]    // [V17 tmp12+0x08]
+            stp     x0, x1, [fp, #0x10]    // [V17 tmp12], [V17 tmp12+0x08]
+            ldr     x0, [fp, #0x10]    // [V17 tmp12]
+            ldr     w1, [fp, #0x18]    // [V17 tmp12+0x08]
                      ;; size=36 bbWeight=0.50 PerfScore 5.50
 G_M49887_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x19, [sp, #0x28]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M49887_IG09:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+                     ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M49887_IG09:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0] +[x1]
-            ldr     x0, [x1, #0x08]
-            ; gcrRegs +[x0]
-            mov     w1, #1
+            ldr     x19, [x1, #0x08]
+            ; gcrRegs +[x19]
+            ldr     x1, [x0, #0x38]
             ; gcrRegs -[x1]
-                       ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M49887_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x1, [x1, #0x10]
+            cbnz    x1, G_M49887_IG11
+                       ;; size=16 bbWeight=0.50 PerfScore 5.00
+G_M49887_IG10:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=16 bbWeight=0.10 PerfScore 0.25
+G_M49887_IG11:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            mov     w1, #1
+            mov     x0, x19
+            ; gcrRegs +[x0]
+                       ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M49887_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x19, [sp, #0x28]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=8 bbWeight=0.50 PerfScore 1.00
+                        ;; size=12 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 136, prolog size 16, PerfScore 95.45, instruction count 34, allocated bytes for code 136 (MethodHash=bb143d20) for method Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
+; Total bytes of code 180, prolog size 20, PerfScore 109.45, instruction count 45, allocated bytes for code 180 (MethodHash=bb143d20) for method Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
   >> Start offset   : 0x000000 (not in unwind data)
   >>   End offset   : 0xd1ffab1e (not in unwind data)
-  Code Words        : 1
+  Code Words        : 2
   Epilog Count      : 2
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 34 (0x00022) Actual length = 136 (0x000088)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -119,7 +138,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D0 05       save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
     85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
+    E4          end
+    E4          end
 
  
+48 (+32.43%) : 8111.dasm - Internal.Utilities.Library.ResultOrException:otherwiseSystem.__Canon:Internal.Utilities.Library.ResultOrException`1System.__Canon
@@ -8,9 +8,9 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 RetBuf       [V00,T02] (  4,  3   )   byref  ->  x20         single-def
-;  V01 TypeCtx      [V01,T01] (  5,  3.60)    long  ->   x0         single-def
-;  V02 arg0         [V02,T03] (  4,  3   )     ref  ->   x2         class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
+;  V00 RetBuf       [V00,T03] (  4,  3   )   byref  ->  x21         single-def
+;  V01 TypeCtx      [V01,T01] (  7,  4.80)    long  ->  x20         single-def
+;  V02 arg0         [V02,T04] (  4,  3   )     ref  ->  x22         class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
 ;  V03 arg1         [V03,T00] (  4,  7   )   byref  ->  x19         ld-addr-op single-def
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 loc1         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -19,83 +19,101 @@
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    "field V03._exception (fldOffset=0x8)" P-INDEP
 ;* V09 tmp5         [V09    ] (  0,  0   )     int  ->  zero-ref    "field V03._tag (fldOffset=0x10)" P-INDEP
 ;* V10 tmp6         [V10    ] (  0,  0   )  struct (24) zero-ref    "Promoted implicit byref" <Internal.Utilities.Library.ResultOrException`1[System.__Canon]>
-;  V11 tmp7         [V11,T06] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V12 rat0         [V12,T05] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V13 rat1         [V13,T04] (  3,  2.80)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V11 tmp7         [V11,T07] (  2,  2   )    long  ->   x0         "argument with side effect"
+;* V12 rat0         [V12,T08] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V13 rat1         [V13,T02] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V14 rat2         [V14,T06] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V15 rat3         [V15,T05] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
 G_M63339_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
+            stp     fp, lr, [sp, #-0x40]!
             stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
             str     x0, [fp, #0x18]
+            mov     x20, x0
+            mov     x22, x1
+            ; gcrRegs +[x22]
             mov     x19, x2
             ; byrRegs +[x19]
-            mov     x20, x8
-            ; byrRegs +[x20]
-            mov     x2, x1
-            ; gcrRegs +[x2]
-                       ;; size=28 bbWeight=1 PerfScore 5.00
-G_M63339_IG02:        ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=180000 {x19 x20}, byref, isz
-            ldr     w1, [x19, #0x10]
-            cmp     w1, #1
-            beq     G_M63339_IG08
-                       ;; size=12 bbWeight=1 PerfScore 4.50
-G_M63339_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
-            ; gcrRegs -[x2]
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x10]
-            cbz     x2, G_M63339_IG05
-                       ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M63339_IG04:        ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
-            mov     x0, x2
-            b       G_M63339_IG06
-                       ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M63339_IG05:        ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+            mov     x21, x8
+            ; byrRegs +[x21]
+                       ;; size=36 bbWeight=1 PerfScore 6.50
+G_M63339_IG02:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz
+            ldr     x0, [x20, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M63339_IG04
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M63339_IG03:        ; bbWeight=0.20, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref
+            mov     x0, x20
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
-                       ;; size=16 bbWeight=0.10 PerfScore 0.25
-G_M63339_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+                      ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M63339_IG04:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz
+            ldr     w0, [x19, #0x10]
+            cmp     w0, #1
+            beq     G_M63339_IG10
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M63339_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref, isz
+            ; gcrRegs -[x22]
+            ldr     x0, [x20, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M63339_IG07
+                       ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M63339_IG06:        ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
+            b       G_M63339_IG08
+                       ;; size=4 bbWeight=0.40 PerfScore 0.40
+G_M63339_IG07:        ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
+            mov     x0, x20
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=20 bbWeight=0.10 PerfScore 0.30
+G_M63339_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
             ldr     x1, [x19]
             ; gcrRegs +[x1]
-            mov     x8, x20
+            mov     x8, x21
             ; byrRegs +[x8]
             movz    x2, #0xD1FFAB1E      // code for Internal.Utilities.Library.ResultOrException`1[System.__Canon]:NewResult(System.__Canon):Internal.Utilities.Library.ResultOrException`1[System.__Canon]
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             ldr     x2, [x2]
                        ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M63339_IG07:        ; bbWeight=0.50, epilog, nogc, extend
+G_M63339_IG09:        ; bbWeight=0.50, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x30
+            ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M63339_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=100000 {x20}, gcvars, byref
-            ; gcrRegs -[x1] +[x2]
+                        ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M63339_IG10:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref
+            ; gcrRegs -[x1] +[x22]
             ; byrRegs -[x8 x19]
-            mov     x0, x2
+            mov     x0, x22
             ; gcrRegs +[x0]
-            mov     x8, x20
+            mov     x8, x21
             ; byrRegs +[x8]
             mov     x1, xzr
-            ldr     x2, [x2]
-            ; gcrRegs -[x2]
+            ldr     x2, [x22]
             ldr     x2, [x2, #0x48]
             ldr     x2, [x2, #0x20]
                        ;; size=24 bbWeight=0.50 PerfScore 5.25
-G_M63339_IG09:        ; bbWeight=0.50, epilog, nogc, extend
+G_M63339_IG11:        ; bbWeight=0.50, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x30
+            ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=12 bbWeight=0.50 PerfScore 1.50
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 148, prolog size 28, PerfScore 26.10, instruction count 37, allocated bytes for code 148 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
+; Total bytes of code 196, prolog size 36, PerfScore 36.05, instruction count 49, allocated bytes for code 196 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -106,7 +124,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 37 (0x00025) Actual length = 148 (0x000094)
+  Function Length   : 49 (0x00031) Actual length = 196 (0x0000c4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -117,9 +135,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    E6          save_next
     C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
-    E4          end
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
     E4          end
     E4          end
  
  
  
Details
Improvements/regressions per collection
| Collection | 
Contexts with diffs | 
Improvements | 
Regressions | 
Same size | 
Improvements (bytes) | 
Regressions (bytes) | 
| benchmarks.run.linux.arm64.checked.mch | 
60 | 
15 | 
24 | 
21 | 
-252 | 
+1,084 | 
| benchmarks.run_pgo.linux.arm64.checked.mch | 
168 | 
88 | 
46 | 
34 | 
-2,548 | 
+2,168 | 
| benchmarks.run_tiered.linux.arm64.checked.mch | 
47 | 
8 | 
7 | 
32 | 
-308 | 
+324 | 
| coreclr_tests.run.linux.arm64.checked.mch | 
2 | 
2 | 
0 | 
0 | 
-32 | 
+0 | 
| libraries.crossgen2.linux.arm64.checked.mch | 
0 | 
0 | 
0 | 
0 | 
-0 | 
+0 | 
| libraries.pmi.linux.arm64.checked.mch | 
174 | 
17 | 
51 | 
106 | 
-292 | 
+5,076 | 
| libraries_tests.run.linux.arm64.Release.mch | 
25 | 
5 | 
5 | 
15 | 
-188 | 
+372 | 
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 
110 | 
20 | 
46 | 
44 | 
-188 | 
+3,348 | 
| realworld.run.linux.arm64.checked.mch | 
85 | 
9 | 
51 | 
25 | 
-92 | 
+4,412 | 
| smoke_tests.nativeaot.linux.arm64.checked.mch | 
0 | 
0 | 
0 | 
0 | 
-0 | 
+0 | 
 | 
671 | 
164 | 
230 | 
277 | 
-3,900 | 
+16,784 | 
Context information
| Collection | 
Diffed contexts | 
MinOpts | 
FullOpts | 
Missed, base | 
Missed, diff | 
| benchmarks.run.linux.arm64.checked.mch | 
7,256 | 
508 | 
6,748 | 
0 (0.00%) | 
5,694 (42.66%) | 
| benchmarks.run_pgo.linux.arm64.checked.mch | 
17,668 | 
13,931 | 
3,737 | 
0 (0.00%) | 
8,035 (30.79%) | 
| benchmarks.run_tiered.linux.arm64.checked.mch | 
17,064 | 
14,671 | 
2,393 | 
0 (0.00%) | 
5,491 (23.92%) | 
| coreclr_tests.run.linux.arm64.checked.mch | 
1,126 | 
3 | 
1,123 | 
0 (0.00%) | 
6,301 (80.54%) | 
| libraries.crossgen2.linux.arm64.checked.mch | 
2,218 | 
0 | 
2,218 | 
0 (0.00%) | 
1,317 (33.50%) | 
| libraries.pmi.linux.arm64.checked.mch | 
17,000 | 
0 | 
17,000 | 
0 (0.00%) | 
7,367 (29.75%) | 
| libraries_tests.run.linux.arm64.Release.mch | 
12,344 | 
11,752 | 
592 | 
0 (0.00%) | 
5,023 (28.28%) | 
| librariestestsnotieredcompilation.run.linux.arm64.Release.mch | 
6,633 | 
0 | 
6,633 | 
0 (0.00%) | 
5,058 (41.85%) | 
| realworld.run.linux.arm64.checked.mch | 
10,692 | 
132 | 
10,560 | 
0 (0.00%) | 
6,240 (36.01%) | 
| smoke_tests.nativeaot.linux.arm64.checked.mch | 
3,286 | 
2 | 
3,284 | 
0 (0.00%) | 
4,048 (52.37%) | 
 | 
95,287 | 
40,999 | 
54,288 | 
0 (0.00%) | 
54,574 (35.48%) | 
jit-analyze output
benchmarks.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1346400 (overridden on cmd)
Total bytes of diff: 1347232 (overridden on cmd)
Total bytes of delta: 832 (0.06 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         208 : 1689.dasm (19.62 % of base)
         144 : 5747.dasm (45.00 % of base)
          92 : 9701.dasm (13.37 % of base)
          56 : 14231.dasm (6.06 % of base)
          56 : 2848.dasm (36.84 % of base)
          44 : 1173.dasm (9.02 % of base)
          44 : 2645.dasm (14.29 % of base)
          44 : 2837.dasm (7.48 % of base)
          44 : 5577.dasm (9.57 % of base)
          40 : 1729.dasm (15.38 % of base)
          40 : 2107.dasm (11.11 % of base)
          40 : 2954.dasm (8.47 % of base)
          40 : 3461.dasm (8.47 % of base)
          40 : 5910.dasm (4.18 % of base)
          40 : 7564.dasm (20.83 % of base)
          32 : 2120.dasm (7.69 % of base)
          28 : 11405.dasm (4.55 % of base)
          24 : 810.dasm (5.45 % of base)
           8 : 15419.dasm (1.44 % of base)
           4 : 11054.dasm (5.56 % of base)
Top file improvements (bytes):
         -48 : 5780.dasm (-10.53 % of base)
         -28 : 1381.dasm (-10.61 % of base)
         -24 : 12423.dasm (-2.02 % of base)
         -24 : 96.dasm (-4.51 % of base)
         -24 : 2337.dasm (-3.51 % of base)
         -24 : 9401.dasm (-5.71 % of base)
         -20 : 5218.dasm (-5.49 % of base)
         -20 : 401.dasm (-3.70 % of base)
         -12 : 12385.dasm (-2.75 % of base)
          -8 : 2091.dasm (-1.59 % of base)
          -4 : 1004.dasm (-0.82 % of base)
          -4 : 2854.dasm (-0.58 % of base)
          -4 : 4116.dasm (-0.29 % of base)
          -4 : 9867.dasm (-1.23 % of base)
          -4 : 1007.dasm (-0.89 % of base)
39 total files with Code Size differences (15 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
         208 (19.62 % of base) : 1689.dasm - System.Collections.Frozen.FrozenDictionary:GetExistingFrozenOrNewDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (FullOpts)
         144 (45.00 % of base) : 5747.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          92 (13.37 % of base) : 9701.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (FullOpts)
          56 (6.06 % of base) : 14231.dasm - System.Collections.Immutable.ImmutableQueue:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
          56 (36.84 % of base) : 2848.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
          44 (9.57 % of base) : 5577.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd[System.ValueTuple`2[System.__Canon,System.__Canon]](System.__Canon,System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          44 (9.02 % of base) : 1173.dasm - System.Linq.Enumerable:MaxInteger[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,int]):int (FullOpts)
          44 (7.48 % of base) : 2837.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          44 (14.29 % of base) : 2645.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
          40 (15.38 % of base) : 1729.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
          40 (11.11 % of base) : 2107.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          40 (20.83 % of base) : 7564.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
          40 (8.47 % of base) : 3461.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (FullOpts)
          40 (8.47 % of base) : 2954.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
          40 (4.18 % of base) : 5910.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          32 (7.69 % of base) : 2120.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (FullOpts)
          28 (4.55 % of base) : 11405.dasm - Sigil.Impl.BufferedILGenerator`1[System.__Canon]:Join[System.__Canon](System.String,System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts)
          24 (5.45 % of base) : 810.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           8 (1.44 % of base) : 15419.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
           4 (2.70 % of base) : 4253.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
Top method improvements (bytes):
         -48 (-10.53 % of base) : 5780.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -28 (-10.61 % of base) : 1381.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
         -24 (-5.71 % of base) : 9401.dasm - BenchmarkDotNet.Engines.ConsumerExtensions:Consume[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],BenchmarkDotNet.Engines.Consumer) (FullOpts)
         -24 (-3.51 % of base) : 2337.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (FullOpts)
         -24 (-4.51 % of base) : 96.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -24 (-2.02 % of base) : 12423.dasm - System.Xml.Serialization.XmlReflectionImporter:CreateArrayElementsFromAttributes(System.Xml.Serialization.ArrayMapping,System.Xml.Serialization.XmlArrayItemAttributes,System.Type,System.String,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
         -20 (-5.49 % of base) : 5218.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
         -20 (-3.70 % of base) : 401.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -12 (-2.75 % of base) : 12385.dasm - System.Linq.Enumerable:<AggregateByIterator>g__PopulateDictionary|75_0[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -8 (-1.59 % of base) : 2091.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:ArrayOfUniqueValues[System.__Canon](int):System.__Canon[] (FullOpts)
          -4 (-1.23 % of base) : 9867.dasm - Jil.Common.ExtensionMethods:ForEach[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
          -4 (-0.89 % of base) : 1007.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.29 % of base) : 4116.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.82 % of base) : 1004.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.58 % of base) : 2854.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
Top method regressions (percentages):
         144 (45.00 % of base) : 5747.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          56 (36.84 % of base) : 2848.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
          40 (20.83 % of base) : 7564.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
         208 (19.62 % of base) : 1689.dasm - System.Collections.Frozen.FrozenDictionary:GetExistingFrozenOrNewDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (FullOpts)
          40 (15.38 % of base) : 1729.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
          44 (14.29 % of base) : 2645.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
          92 (13.37 % of base) : 9701.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (FullOpts)
          40 (11.11 % of base) : 2107.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          44 (9.57 % of base) : 5577.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd[System.ValueTuple`2[System.__Canon,System.__Canon]](System.__Canon,System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          44 (9.02 % of base) : 1173.dasm - System.Linq.Enumerable:MaxInteger[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,int]):int (FullOpts)
          40 (8.47 % of base) : 3461.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (FullOpts)
          40 (8.47 % of base) : 2954.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
          32 (7.69 % of base) : 2120.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.IOrderedCollection`1[System.__Canon] (FullOpts)
          44 (7.48 % of base) : 2837.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          56 (6.06 % of base) : 14231.dasm - System.Collections.Immutable.ImmutableQueue:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
           4 (5.56 % of base) : 11054.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
          24 (5.45 % of base) : 810.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          28 (4.55 % of base) : 11405.dasm - Sigil.Impl.BufferedILGenerator`1[System.__Canon]:Join[System.__Canon](System.String,System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts)
           4 (4.55 % of base) : 5434.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
           4 (4.55 % of base) : 10965.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
Top method improvements (percentages):
         -28 (-10.61 % of base) : 1381.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
         -48 (-10.53 % of base) : 5780.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -24 (-5.71 % of base) : 9401.dasm - BenchmarkDotNet.Engines.ConsumerExtensions:Consume[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],BenchmarkDotNet.Engines.Consumer) (FullOpts)
         -20 (-5.49 % of base) : 5218.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
         -24 (-4.51 % of base) : 96.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-3.70 % of base) : 401.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -24 (-3.51 % of base) : 2337.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (FullOpts)
         -12 (-2.75 % of base) : 12385.dasm - System.Linq.Enumerable:<AggregateByIterator>g__PopulateDictionary|75_0[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
         -24 (-2.02 % of base) : 12423.dasm - System.Xml.Serialization.XmlReflectionImporter:CreateArrayElementsFromAttributes(System.Xml.Serialization.ArrayMapping,System.Xml.Serialization.XmlArrayItemAttributes,System.Type,System.String,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
          -8 (-1.59 % of base) : 2091.dasm - BenchmarkDotNet.Extensions.ValuesGenerator:ArrayOfUniqueValues[System.__Canon](int):System.__Canon[] (FullOpts)
          -4 (-1.23 % of base) : 9867.dasm - Jil.Common.ExtensionMethods:ForEach[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
          -4 (-0.89 % of base) : 1007.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.82 % of base) : 1004.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.58 % of base) : 2854.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
          -4 (-0.29 % of base) : 4116.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
  
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: 3029072 (overridden on cmd)
Total bytes of diff: 3028692 (overridden on cmd)
Total bytes of delta: -380 (-0.01 % of base)
    diff is an improvement.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
          48 : 10056.dasm (36.36 % of base)
          48 : 11032.dasm (36.36 % of base)
          48 : 12716.dasm (36.36 % of base)
          48 : 13967.dasm (36.36 % of base)
          48 : 14556.dasm (36.36 % of base)
          48 : 17927.dasm (36.36 % of base)
          48 : 18224.dasm (36.36 % of base)
          48 : 18824.dasm (36.36 % of base)
          48 : 19408.dasm (36.36 % of base)
          48 : 20072.dasm (36.36 % of base)
          48 : 20347.dasm (36.36 % of base)
          48 : 20915.dasm (36.36 % of base)
          48 : 25528.dasm (36.36 % of base)
          48 : 25768.dasm (36.36 % of base)
          48 : 27300.dasm (36.36 % of base)
          48 : 7832.dasm (36.36 % of base)
          48 : 8064.dasm (36.36 % of base)
          48 : 9224.dasm (36.36 % of base)
          48 : 9400.dasm (36.36 % of base)
          48 : 10792.dasm (36.36 % of base)
Top file improvements (bytes):
        -140 : 14877.dasm (-8.88 % of base)
         -96 : 25402.dasm (-6.56 % of base)
         -40 : 16588.dasm (-11.36 % of base)
         -36 : 16347.dasm (-6.29 % of base)
         -28 : 13972.dasm (-5.15 % of base)
         -28 : 14193.dasm (-3.30 % of base)
         -28 : 14305.dasm (-3.30 % of base)
         -28 : 14567.dasm (-5.15 % of base)
         -28 : 15805.dasm (-3.30 % of base)
         -28 : 15841.dasm (-3.30 % of base)
         -28 : 16121.dasm (-3.30 % of base)
         -28 : 17671.dasm (-5.15 % of base)
         -28 : 18073.dasm (-3.30 % of base)
         -28 : 18363.dasm (-5.15 % of base)
         -28 : 19381.dasm (-3.30 % of base)
         -28 : 19423.dasm (-5.15 % of base)
         -28 : 19441.dasm (-5.15 % of base)
         -28 : 20925.dasm (-5.15 % of base)
         -28 : 21413.dasm (-3.30 % of base)
         -28 : 21966.dasm (-5.15 % of base)
52 total files with Code Size differences (32 improved, 20 regressed), 20 unchanged.
Top method regressions (bytes):
          48 (36.36 % of base) : 10056.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 11032.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 12716.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 13967.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 14556.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 17927.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 18224.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 18824.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 19408.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 20072.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 20347.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 20915.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 25528.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 25768.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 27300.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 7832.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 8064.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 9224.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 9400.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 10792.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
        -140 (-8.88 % of base) : 14877.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
         -96 (-6.56 % of base) : 25402.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -40 (-11.36 % of base) : 16588.dasm - System.Threading.Tasks.ValueTask:AsTask():System.Threading.Tasks.Task:this (Tier1)
         -36 (-6.29 % of base) : 16347.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
         -28 (-5.15 % of base) : 13972.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 14193.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 14305.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 14567.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 15805.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 15841.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 16121.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 17671.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 18073.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 18363.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 19381.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 19423.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 19441.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 20925.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 21413.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 21966.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method regressions (percentages):
          48 (36.36 % of base) : 10056.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 11032.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 12716.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 13967.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 14556.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 17927.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 18224.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 18824.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 19408.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 20072.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 20347.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 20915.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 25528.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 25768.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 27300.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 7832.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 8064.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 9224.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 9400.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 10792.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
         -40 (-11.36 % of base) : 16588.dasm - System.Threading.Tasks.ValueTask:AsTask():System.Threading.Tasks.Task:this (Tier1)
        -140 (-8.88 % of base) : 14877.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
         -96 (-6.56 % of base) : 25402.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -36 (-6.29 % of base) : 16347.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
         -20 (-5.49 % of base) : 8139.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
         -28 (-5.15 % of base) : 13972.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 14567.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 17671.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 18363.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 19423.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 19441.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 20925.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 21966.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 25238.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 26037.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 27253.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 6040.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 9413.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 10248.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 10800.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
  
benchmarks.run_tiered.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: 2686108 (overridden on cmd)
Total bytes of diff: 2686124 (overridden on cmd)
Total bytes of delta: 16 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
          56 : 9077.dasm (36.84 % of base)
          52 : 10598.dasm (11.02 % of base)
          52 : 16327.dasm (27.08 % of base)
          52 : 23076.dasm (14.44 % of base)
          48 : 1599.dasm (36.36 % of base)
          40 : 9129.dasm (15.38 % of base)
          24 : 5971.dasm (5.45 % of base)
Top file improvements (bytes):
        -140 : 7424.dasm (-8.88 % of base)
         -96 : 9390.dasm (-6.56 % of base)
         -24 : 1603.dasm (-4.51 % of base)
         -20 : 5633.dasm (-3.70 % of base)
         -16 : 9165.dasm (-3.36 % of base)
          -4 : 8495.dasm (-0.89 % of base)
          -4 : 9132.dasm (-1.15 % of base)
          -4 : 9168.dasm (-0.82 % of base)
15 total files with Code Size differences (8 improved, 7 regressed), 29 unchanged.
Top method regressions (bytes):
          56 (36.84 % of base) : 9077.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          52 (14.44 % of base) : 23076.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
          52 (27.08 % of base) : 16327.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier1)
          52 (11.02 % of base) : 10598.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier1)
          48 (36.36 % of base) : 1599.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          40 (15.38 % of base) : 9129.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          24 (5.45 % of base) : 5971.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
Top method improvements (bytes):
        -140 (-8.88 % of base) : 7424.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
         -96 (-6.56 % of base) : 9390.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -24 (-4.51 % of base) : 1603.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -20 (-3.70 % of base) : 5633.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
         -16 (-3.36 % of base) : 9165.dasm - BenchmarksGame.Mandelbrot_2:DoBench(int,System.IO.MemoryStream,ubyte) (Tier1-OSR)
          -4 (-0.89 % of base) : 8495.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
          -4 (-1.15 % of base) : 9132.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
          -4 (-0.82 % of base) : 9168.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
Top method regressions (percentages):
          56 (36.84 % of base) : 9077.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          48 (36.36 % of base) : 1599.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          52 (27.08 % of base) : 16327.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier1)
          40 (15.38 % of base) : 9129.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          52 (14.44 % of base) : 23076.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
          52 (11.02 % of base) : 10598.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (Tier1)
          24 (5.45 % of base) : 5971.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
Top method improvements (percentages):
        -140 (-8.88 % of base) : 7424.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
         -96 (-6.56 % of base) : 9390.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -24 (-4.51 % of base) : 1603.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -20 (-3.70 % of base) : 5633.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
         -16 (-3.36 % of base) : 9165.dasm - BenchmarksGame.Mandelbrot_2:DoBench(int,System.IO.MemoryStream,ubyte) (Tier1-OSR)
          -4 (-1.15 % of base) : 9132.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
          -4 (-0.89 % of base) : 8495.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
          -4 (-0.82 % of base) : 9168.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
  
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: 265276 (overridden on cmd)
Total bytes of diff: 265244 (overridden on cmd)
Total bytes of delta: -32 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs
Top file improvements (bytes):
         -28 : 12.dasm (-10.61 % of base)
          -4 : 399.dasm (-0.82 % of base)
2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.
Top method improvements (bytes):
         -28 (-10.61 % of base) : 12.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
          -4 (-0.82 % of base) : 399.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
Top method improvements (percentages):
         -28 (-10.61 % of base) : 12.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
          -4 (-0.82 % of base) : 399.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
2 total methods with Code Size differences (2 improved, 0 regressed).
  
libraries.pmi.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1426088 (overridden on cmd)
Total bytes of diff: 1430872 (overridden on cmd)
Total bytes of delta: 4784 (0.34 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
        1364 : 6011.dasm (149.56 % of base)
         196 : 15216.dasm (48.04 % of base)
         172 : 15214.dasm (48.31 % of base)
         132 : 15212.dasm (42.31 % of base)
         112 : 442.dasm (16.67 % of base)
         108 : 15210.dasm (41.54 % of base)
          92 : 13561.dasm (60.53 % of base)
          92 : 13248.dasm (16.08 % of base)
          92 : 13552.dasm (60.53 % of base)
          92 : 13553.dasm (60.53 % of base)
          92 : 13562.dasm (60.53 % of base)
          92 : 24249.dasm (14.02 % of base)
          84 : 16710.dasm (4.36 % of base)
          84 : 24247.dasm (16.94 % of base)
          84 : 12902.dasm (32.81 % of base)
          84 : 12740.dasm (12.80 % of base)
          80 : 13550.dasm (48.78 % of base)
          80 : 13551.dasm (48.78 % of base)
          80 : 13554.dasm (48.78 % of base)
          80 : 13557.dasm (48.78 % of base)
Top file improvements (bytes):
         -44 : 4164.dasm (-23.91 % of base)
         -44 : 4168.dasm (-17.74 % of base)
         -40 : 1510.dasm (-16.95 % of base)
         -28 : 21.dasm (-10.61 % of base)
         -24 : 13193.dasm (-4.58 % of base)
         -24 : 13218.dasm (-4.84 % of base)
         -24 : 15111.dasm (-4.11 % of base)
         -24 : 13283.dasm (-26.09 % of base)
          -8 : 13263.dasm (-1.16 % of base)
          -4 : 13308.dasm (-0.96 % of base)
          -4 : 13408.dasm (-0.99 % of base)
          -4 : 13419.dasm (-0.97 % of base)
          -4 : 14135.dasm (-0.70 % of base)
          -4 : 14616.dasm (-1.30 % of base)
          -4 : 13195.dasm (-0.63 % of base)
          -4 : 13415.dasm (-0.97 % of base)
          -4 : 13225.dasm (-1.19 % of base)
51 total files with Code Size differences (17 improved, 34 regressed), 23 unchanged.
Top method regressions (bytes):
        1364 (149.56 % of base) : 6011.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
         196 (48.04 % of base) : 15216.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
         172 (48.31 % of base) : 15214.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
         132 (42.31 % of base) : 15212.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
         112 (16.67 % of base) : 442.dasm - Interop+procfs:ParseMapsModules(int):System.Diagnostics.ProcessModuleCollection (FullOpts)
         108 (41.54 % of base) : 15210.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:Concat[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          92 (14.02 % of base) : 24249.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:AddRange[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          92 (16.08 % of base) : 13248.dasm - Roslyn.Utilities.EnumerableExtensions:IsSorted[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IComparer`1[System.__Canon]):ubyte (FullOpts)
          92 (60.53 % of base) : 13552.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
          92 (60.53 % of base) : 13553.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
          92 (60.53 % of base) : 13561.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
          92 (60.53 % of base) : 13562.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
          84 (4.36 % of base) : 16710.dasm - Microsoft.CodeAnalysis.AssemblyIdentityUtils:TryGetAssemblyIdentity(System.String):Microsoft.CodeAnalysis.AssemblyIdentity (FullOpts)
          84 (16.94 % of base) : 24247.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:CreateDictionary[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          84 (32.81 % of base) : 12902.dasm - Roslyn.Utilities.StandardFileSystem:OpenFile(System.String,int,int,int):System.IO.Stream:this (FullOpts)
          84 (12.80 % of base) : 12740.dasm - System.Linq.EnumerableExtensions:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`3[System.__Canon,System.__Canon,ubyte]):ubyte (FullOpts)
          80 (48.78 % of base) : 13551.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[int](System.Func`3[System.__Canon,int,ubyte],int):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13554.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13550.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[short](System.Func`3[System.__Canon,short,ubyte],short):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13548.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[System.__Canon](System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon):ubyte:this (FullOpts)
Top method improvements (bytes):
         -44 (-23.91 % of base) : 4164.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -44 (-17.74 % of base) : 4168.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
         -40 (-16.95 % of base) : 1510.dasm - System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
         -28 (-10.61 % of base) : 21.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
         -24 (-4.11 % of base) : 15111.dasm - Microsoft.CodeAnalysis.DictionaryExtensions:ToImmutableSegmentedDictionaryAndFree[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]] (FullOpts)
         -24 (-4.84 % of base) : 13218.dasm - Roslyn.Utilities.EnumerableExtensions:EnumeratingIndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
         -24 (-4.58 % of base) : 13193.dasm - Roslyn.Utilities.EnumerableExtensions:SelectManyAsArray[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]] (FullOpts)
         -24 (-26.09 % of base) : 13283.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
          -8 (-1.16 % of base) : 13263.dasm - Roslyn.Utilities.EnumerableExtensions:ToMultiDictionary[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Func`2[System.Nullable`1[int],System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]] (FullOpts)
          -4 (-1.30 % of base) : 14616.dasm - Microsoft.Cci.ReferenceIndexer:VisitMethodBodyReference(Microsoft.Cci.IReference):this (FullOpts)
          -4 (-0.70 % of base) : 14135.dasm - Microsoft.Cci.SymWriterMetadataProvider:TryGetTypeDefinitionInfo(int,byref,byref,byref):ubyte:this (FullOpts)
          -4 (-1.19 % of base) : 13225.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
          -4 (-0.63 % of base) : 13195.dasm - Roslyn.Utilities.EnumerableExtensions:SelectManyAsArray[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]] (FullOpts)
          -4 (-0.96 % of base) : 13308.dasm - Roslyn.Utilities.Hash:CombineValues[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):int (FullOpts)
          -4 (-0.99 % of base) : 13408.dasm - Roslyn.Utilities.IReadOnlyListExtensions:Contains[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.97 % of base) : 13415.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.97 % of base) : 13419.dasm - Roslyn.Utilities.ISetExtensions:RemoveAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
Top method regressions (percentages):
        1364 (149.56 % of base) : 6011.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
          64 (61.54 % of base) : 17819.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon] (FullOpts)
          64 (61.54 % of base) : 17821.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          92 (60.53 % of base) : 13552.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
          92 (60.53 % of base) : 13553.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
          92 (60.53 % of base) : 13561.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[double](System.Func`3[System.__Canon,double,ubyte],double):ubyte:this (FullOpts)
          92 (60.53 % of base) : 13562.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[System.Numerics.Vector`1[float]](System.Func`3[System.__Canon,System.Numerics.Vector`1[float],ubyte],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
          68 (54.84 % of base) : 13400.dasm - Roslyn.Utilities.InterlockedOperations:Initialize[System.__Canon](byref,System.Collections.Immutable.ImmutableArray`1[System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          80 (48.78 % of base) : 13551.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[int](System.Func`3[System.__Canon,int,ubyte],int):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13554.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13550.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[short](System.Func`3[System.__Canon,short,ubyte],short):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13548.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[System.__Canon](System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13549.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:All[ubyte](System.Func`3[System.__Canon,ubyte,ubyte],ubyte):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13560.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[int](System.Func`3[System.__Canon,int,ubyte],int):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13563.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[long](System.Func`3[System.__Canon,long,ubyte],long):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13559.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[short](System.Func`3[System.__Canon,short,ubyte],short):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13557.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[System.__Canon](System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon):ubyte:this (FullOpts)
          80 (48.78 % of base) : 13558.dasm - Roslyn.Utilities.OneOrMany`1[System.__Canon]:Any[ubyte](System.Func`3[System.__Canon,ubyte,ubyte],ubyte):ubyte:this (FullOpts)
          60 (48.39 % of base) : 17809.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.__Canon,System.Nullable`1[int]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.__Canon],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Nullable`1[int]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
          60 (48.39 % of base) : 17807.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.__Canon,System.Nullable`1[int]](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Nullable`1[int]]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]] (FullOpts)
Top method improvements (percentages):
         -24 (-26.09 % of base) : 13283.dasm - Roslyn.Utilities.EnumUtilities:GetValues[ubyte]():ubyte[] (FullOpts)
         -44 (-23.91 % of base) : 4164.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -44 (-17.74 % of base) : 4168.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
         -40 (-16.95 % of base) : 1510.dasm - System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
         -28 (-10.61 % of base) : 21.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
         -24 (-4.84 % of base) : 13218.dasm - Roslyn.Utilities.EnumerableExtensions:EnumeratingIndexOf[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
         -24 (-4.58 % of base) : 13193.dasm - Roslyn.Utilities.EnumerableExtensions:SelectManyAsArray[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]] (FullOpts)
         -24 (-4.11 % of base) : 15111.dasm - Microsoft.CodeAnalysis.DictionaryExtensions:ToImmutableSegmentedDictionaryAndFree[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.__Canon]):Microsoft.CodeAnalysis.Collections.ImmutableSegmentedDictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]] (FullOpts)
          -4 (-1.30 % of base) : 14616.dasm - Microsoft.Cci.ReferenceIndexer:VisitMethodBodyReference(Microsoft.Cci.IReference):this (FullOpts)
          -4 (-1.19 % of base) : 13225.dasm - Roslyn.Utilities.EnumerableExtensions:IndexOf[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int (FullOpts)
          -8 (-1.16 % of base) : 13263.dasm - Roslyn.Utilities.EnumerableExtensions:ToMultiDictionary[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]],System.Func`2[System.Nullable`1[int],System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]] (FullOpts)
          -4 (-0.99 % of base) : 13408.dasm - Roslyn.Utilities.IReadOnlyListExtensions:Contains[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.97 % of base) : 13415.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.97 % of base) : 13419.dasm - Roslyn.Utilities.ISetExtensions:RemoveAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.96 % of base) : 13308.dasm - Roslyn.Utilities.Hash:CombineValues[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):int (FullOpts)
          -4 (-0.70 % of base) : 14135.dasm - Microsoft.Cci.SymWriterMetadataProvider:TryGetTypeDefinitionInfo(int,byref,byref,byref):ubyte:this (FullOpts)
          -4 (-0.63 % of base) : 13195.dasm - Roslyn.Utilities.EnumerableExtensions:SelectManyAsArray[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]] (FullOpts)
  
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: 2011980 (overridden on cmd)
Total bytes of diff: 2012164 (overridden on cmd)
Total bytes of delta: 184 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         144 : 5081.dasm (45.00 % of base)
          76 : 4174.dasm (32.20 % of base)
          56 : 4976.dasm (31.82 % of base)
          48 : 3522.dasm (33.33 % of base)
          48 : 3952.dasm (33.33 % of base)
Top file improvements (bytes):
         -72 : 4931.dasm (-15.00 % of base)
         -52 : 1164.dasm (-32.50 % of base)
         -36 : 3959.dasm (-14.52 % of base)
         -24 : 3964.dasm (-4.51 % of base)
          -4 : 1429.dasm (-3.33 % of base)
10 total files with Code Size differences (5 improved, 5 regressed), 15 unchanged.
Top method regressions (bytes):
         144 (45.00 % of base) : 5081.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
          76 (32.20 % of base) : 4174.dasm - System.IO.File:OpenRead(System.String):System.IO.FileStream (Instrumented Tier1)
          56 (31.82 % of base) : 4976.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          48 (33.33 % of base) : 3522.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (33.33 % of base) : 3952.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
         -72 (-15.00 % of base) : 4931.dasm - System.Linq.Enumerable:ToArray[Internal.Microsoft.Extensions.DependencyModel.Dependency](System.Collections.Generic.IEnumerable`1[Internal.Microsoft.Extensions.DependencyModel.Dependency]):Internal.Microsoft.Extensions.DependencyModel.Dependency[] (Tier1)
         -52 (-32.50 % of base) : 1164.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
         -36 (-14.52 % of base) : 3959.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -24 (-4.51 % of base) : 3964.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
          -4 (-3.33 % of base) : 1429.dasm - Xunit.TestFrameworkOptions:GetValue[System.Nullable`1[ubyte]](System.String):System.Nullable`1[ubyte]:this (Tier0)
Top method regressions (percentages):
         144 (45.00 % of base) : 5081.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
          48 (33.33 % of base) : 3522.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (33.33 % of base) : 3952.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          76 (32.20 % of base) : 4174.dasm - System.IO.File:OpenRead(System.String):System.IO.FileStream (Instrumented Tier1)
          56 (31.82 % of base) : 4976.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
Top method improvements (percentages):
         -52 (-32.50 % of base) : 1164.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
         -72 (-15.00 % of base) : 4931.dasm - System.Linq.Enumerable:ToArray[Internal.Microsoft.Extensions.DependencyModel.Dependency](System.Collections.Generic.IEnumerable`1[Internal.Microsoft.Extensions.DependencyModel.Dependency]):Internal.Microsoft.Extensions.DependencyModel.Dependency[] (Tier1)
         -36 (-14.52 % of base) : 3959.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -24 (-4.51 % of base) : 3964.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
          -4 (-3.33 % of base) : 1429.dasm - Xunit.TestFrameworkOptions:GetValue[System.Nullable`1[ubyte]](System.String):System.Nullable`1[ubyte]:this (Tier0)
10 total methods with Code Size differences (5 improved, 5 regressed).
  
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1298624 (overridden on cmd)
Total bytes of diff: 1301784 (overridden on cmd)
Total bytes of delta: 3160 (0.24 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         332 : 3399.dasm (19.76 % of base)
         244 : 4746.dasm (20.40 % of base)
         144 : 69.dasm (45.00 % of base)
         136 : 10389.dasm (24.11 % of base)
         136 : 6614.dasm (47.22 % of base)
         132 : 5998.dasm (17.46 % of base)
         128 : 2882.dasm (35.16 % of base)
         128 : 10392.dasm (23.53 % of base)
         112 : 741.dasm (16.67 % of base)
          96 : 1929.dasm (24.49 % of base)
          88 : 5886.dasm (12.09 % of base)
          84 : 2103.dasm (32.81 % of base)
          84 : 401.dasm (18.42 % of base)
          76 : 24.dasm (32.20 % of base)
          76 : 3379.dasm (11.38 % of base)
          68 : 10405.dasm (19.10 % of base)
          68 : 11038.dasm (20.48 % of base)
          64 : 5517.dasm (61.54 % of base)
          64 : 8898.dasm (30.19 % of base)
          64 : 10380.dasm (16.67 % of base)
Top file improvements (bytes):
         -32 : 2942.dasm (-9.41 % of base)
         -28 : 342.dasm (-10.61 % of base)
         -20 : 2671.dasm (-20.83 % of base)
         -20 : 2976.dasm (-5.49 % of base)
         -16 : 759.dasm (-1.76 % of base)
         -12 : 3292.dasm (-1.90 % of base)
          -8 : 10365.dasm (-0.53 % of base)
          -4 : 1002.dasm (-0.27 % of base)
          -4 : 3044.dasm (-0.29 % of base)
          -4 : 510.dasm (-0.60 % of base)
          -4 : 5802.dasm (-1.18 % of base)
          -4 : 60.dasm (-0.83 % of base)
          -4 : 7072.dasm (-1.18 % of base)
          -4 : 8623.dasm (-0.96 % of base)
          -4 : 256.dasm (-0.68 % of base)
          -4 : 3115.dasm (-0.78 % of base)
          -4 : 321.dasm (-0.89 % of base)
          -4 : 395.dasm (-0.90 % of base)
          -4 : 6265.dasm (-0.97 % of base)
          -4 : 7740.dasm (-2.70 % of base)
50 total files with Code Size differences (20 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
         332 (19.76 % of base) : 3399.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         244 (20.40 % of base) : 4746.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
         144 (45.00 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         136 (47.22 % of base) : 6614.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
         136 (24.11 % of base) : 10389.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveLessDerivedMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref) (FullOpts)
         132 (17.46 % of base) : 5998.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
         128 (23.53 % of base) : 10392.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
         128 (35.16 % of base) : 2882.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
         112 (16.67 % of base) : 741.dasm - Interop+procfs:ParseMapsModules(int):System.Diagnostics.ProcessModuleCollection (FullOpts)
          96 (24.49 % of base) : 1929.dasm - Xunit.ConsoleClient.TransformFactory:Handler_DirectWrite(System.Xml.Linq.XElement,System.String) (FullOpts)
          88 (12.09 % of base) : 5886.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
          84 (32.81 % of base) : 2103.dasm - Roslyn.Utilities.StandardFileSystem:OpenFile(System.String,int,int,int):System.IO.Stream:this (FullOpts)
          84 (18.42 % of base) : 401.dasm - Xunit.ConfigReader_Json:LoadFile(System.String):Xunit.TestAssemblyConfiguration (FullOpts)
          76 (32.20 % of base) : 24.dasm - Internal.Microsoft.Extensions.DependencyModel.FileWrapper:OpenRead(System.String):System.IO.Stream:this (FullOpts)
          76 (11.38 % of base) : 3379.dasm - System.Linq.EnumerableExtensions:SequenceEqual[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],System.Func`3[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],System.Collections.Generic.KeyValuePair`2[System.__Canon,int],ubyte]):ubyte (FullOpts)
          68 (20.48 % of base) : 11038.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          68 (19.10 % of base) : 10405.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
          64 (16.67 % of base) : 10380.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
          64 (30.19 % of base) : 8898.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
          64 (61.54 % of base) : 5517.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
         -32 (-9.41 % of base) : 2942.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
         -28 (-10.61 % of base) : 342.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
         -20 (-20.83 % of base) : 2671.dasm - Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
         -20 (-5.49 % of base) : 2976.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
         -16 (-1.76 % of base) : 759.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -12 (-1.90 % of base) : 3292.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
          -8 (-0.53 % of base) : 10365.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformMemberOverloadResolution[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,byref,byref,ubyte,ubyte,ubyte):this (FullOpts)
          -4 (-0.68 % of base) : 256.dasm - DictionaryExtensions:ToDictionaryIgnoringDuplicateKeys[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-1.18 % of base) : 5802.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
          -4 (-2.70 % of base) : 7740.dasm - Microsoft.Interop.HashCode:Combine[System.Nullable`1[int],System.__Canon,System.__Canon](System.Nullable`1[int],System.__Canon,System.__Canon):int (FullOpts)
          -4 (-1.18 % of base) : 7072.dasm - Microsoft.Interop.HashCode:SequentialValuesHash[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (FullOpts)
          -4 (-0.78 % of base) : 3115.dasm - Microsoft.VisualStudio.Composition.Utilities:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],int):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.96 % of base) : 8623.dasm - Roslyn.Utilities.Hash:CombineValues[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):int (FullOpts)
          -4 (-0.97 % of base) : 6265.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.90 % of base) : 395.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 321.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.27 % of base) : 1002.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.29 % of base) : 3044.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.83 % of base) : 60.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.60 % of base) : 510.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
Top method regressions (percentages):
          64 (84.21 % of base) : 5888.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          64 (61.54 % of base) : 5517.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          60 (48.39 % of base) : 5542.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
         136 (47.22 % of base) : 6614.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
         144 (45.00 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          44 (37.93 % of base) : 4219.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          44 (37.93 % of base) : 11663.dasm - System.Linq.ImmutableArrayExtensions:Where[System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          56 (36.84 % of base) : 11426.dasm - System.GC:AllocateUninitializedArray[System.Collections.Immutable.ImmutableArray`1[System.__Canon]](int,ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon][] (FullOpts)
         128 (35.16 % of base) : 2882.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          44 (33.33 % of base) : 5540.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
          84 (32.81 % of base) : 2103.dasm - Roslyn.Utilities.StandardFileSystem:OpenFile(System.String,int,int,int):System.IO.Stream:this (FullOpts)
          76 (32.20 % of base) : 24.dasm - Internal.Microsoft.Extensions.DependencyModel.FileWrapper:OpenRead(System.String):System.IO.Stream:this (FullOpts)
          64 (30.19 % of base) : 8898.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
          96 (24.49 % of base) : 1929.dasm - Xunit.ConsoleClient.TransformFactory:Handler_DirectWrite(System.Xml.Linq.XElement,System.String) (FullOpts)
         136 (24.11 % of base) : 10389.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveLessDerivedMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref) (FullOpts)
         128 (23.53 % of base) : 10392.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          32 (23.53 % of base) : 1512.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
          48 (23.53 % of base) : 1116.dasm - Xunit.Sdk.ExceptionAggregator:RunAsync[System.__Canon](System.Func`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)
          68 (20.48 % of base) : 11038.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
         244 (20.40 % of base) : 4746.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
Top method improvements (percentages):
         -20 (-20.83 % of base) : 2671.dasm - Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
         -28 (-10.61 % of base) : 342.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
         -32 (-9.41 % of base) : 2942.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
         -20 (-5.49 % of base) : 2976.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
          -4 (-2.70 % of base) : 7740.dasm - Microsoft.Interop.HashCode:Combine[System.Nullable`1[int],System.__Canon,System.__Canon](System.Nullable`1[int],System.__Canon,System.__Canon):int (FullOpts)
         -12 (-1.90 % of base) : 3292.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
         -16 (-1.76 % of base) : 759.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          -4 (-1.18 % of base) : 5802.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
          -4 (-1.18 % of base) : 7072.dasm - Microsoft.Interop.HashCode:SequentialValuesHash[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (FullOpts)
          -4 (-0.97 % of base) : 6265.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.96 % of base) : 8623.dasm - Roslyn.Utilities.Hash:CombineValues[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):int (FullOpts)
          -4 (-0.90 % of base) : 395.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 321.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.83 % of base) : 60.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.78 % of base) : 3115.dasm - Microsoft.VisualStudio.Composition.Utilities:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],int):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.68 % of base) : 256.dasm - DictionaryExtensions:ToDictionaryIgnoringDuplicateKeys[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.60 % of base) : 510.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
          -8 (-0.53 % of base) : 10365.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformMemberOverloadResolution[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,byref,byref,ubyte,ubyte,ubyte):this (FullOpts)
          -4 (-0.29 % of base) : 3044.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.27 % of base) : 1002.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
  
realworld.run.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1975784 (overridden on cmd)
Total bytes of diff: 1980104 (overridden on cmd)
Total bytes of delta: 4320 (0.22 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         504 : 6807.dasm (51.01 % of base)
         300 : 11237.dasm (30.74 % of base)
         288 : 5724.dasm (16.98 % of base)
         224 : 6458.dasm (49.56 % of base)
         224 : 6469.dasm (49.56 % of base)
         224 : 6479.dasm (50.45 % of base)
         224 : 6482.dasm (49.56 % of base)
         144 : 15834.dasm (43.90 % of base)
         144 : 10792.dasm (16.36 % of base)
         140 : 9898.dasm (12.92 % of base)
         116 : 7635.dasm (16.29 % of base)
         100 : 6480.dasm (29.76 % of base)
          96 : 10108.dasm (5.52 % of base)
          92 : 6477.dasm (26.14 % of base)
          84 : 9376.dasm (23.86 % of base)
          80 : 9363.dasm (8.81 % of base)
          76 : 5119.dasm (23.75 % of base)
          68 : 15609.dasm (9.24 % of base)
          56 : 6406.dasm (29.79 % of base)
          56 : 12226.dasm (36.84 % of base)
Top file improvements (bytes):
         -24 : 96.dasm (-4.51 % of base)
         -20 : 401.dasm (-3.70 % of base)
         -16 : 14535.dasm (-1.76 % of base)
         -12 : 8971.dasm (-1.58 % of base)
          -4 : 1002.dasm (-0.82 % of base)
          -4 : 13209.dasm (-0.51 % of base)
          -4 : 13820.dasm (-0.90 % of base)
          -4 : 3835.dasm (-0.30 % of base)
          -4 : 1005.dasm (-0.89 % of base)
39 total files with Code Size differences (9 improved, 30 regressed), 22 unchanged.
Top method regressions (bytes):
         504 (51.01 % of base) : 6807.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         300 (30.74 % of base) : 11237.dasm - FSharp.Compiler.CheckDeclarations+MutRecShapes:expandTyconsWithEnv[System.__Canon,System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         288 (16.98 % of base) : 5724.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         224 (50.45 % of base) : 6479.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6482.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6469.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6458.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         144 (16.36 % of base) : 10792.dasm - Internal.Utilities.Collections.Tagged.MapTreeModule:add[System.__Canon,System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,System.__Canon,Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon]):Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon] (FullOpts)
         144 (43.90 % of base) : 15834.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
         140 (12.92 % of base) : 9898.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:balance[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
         116 (16.29 % of base) : 7635.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:add[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
         100 (29.76 % of base) : 6480.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_unop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          96 (5.52 % of base) : 10108.dasm - FSharp.Compiler.NameResolution:AddResults[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          92 (26.14 % of base) : 6477.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_hash_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          84 (23.86 % of base) : 9376.dasm - FSharp.Compiler.NameResolution:OneResult[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          80 (8.81 % of base) : 9363.dasm - FSharp.Compiler.NameResolution:CollectAtMostOneResult[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          76 (23.75 % of base) : 5119.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          68 (9.24 % of base) : 15609.dasm - System.Net.Sockets.SocketAsyncContext:PerformSyncOperation[System.__Canon](byref,System.__Canon,int,int):this (FullOpts)
          56 (29.79 % of base) : 6406.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
          56 (36.84 % of base) : 12226.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
Top method improvements (bytes):
         -24 (-4.51 % of base) : 96.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-3.70 % of base) : 401.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -16 (-1.76 % of base) : 14535.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -12 (-1.58 % of base) : 8971.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
          -4 (-0.90 % of base) : 13820.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 1005.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.30 % of base) : 3835.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.82 % of base) : 1002.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.51 % of base) : 13209.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
Top method regressions (percentages):
         504 (51.01 % of base) : 6807.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         224 (50.45 % of base) : 6479.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6482.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6469.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6458.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         144 (43.90 % of base) : 15834.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
          56 (36.84 % of base) : 12226.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
          48 (32.43 % of base) : 8111.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          44 (32.35 % of base) : 9790.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
         300 (30.74 % of base) : 11237.dasm - FSharp.Compiler.CheckDeclarations+MutRecShapes:expandTyconsWithEnv[System.__Canon,System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          56 (29.79 % of base) : 6406.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
         100 (29.76 % of base) : 6480.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_unop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          92 (26.14 % of base) : 6477.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_hash_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          84 (23.86 % of base) : 9376.dasm - FSharp.Compiler.NameResolution:OneResult[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          76 (23.75 % of base) : 5119.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          40 (21.28 % of base) : 2662.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          48 (19.05 % of base) : 2897.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
         288 (16.98 % of base) : 5724.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          52 (16.46 % of base) : 3622.dasm - Internal.Utilities.Collections.AgedLookup`3[System.__Canon,System.__Canon,System.__Canon]:Add[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],System.__Canon,System.__Canon):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:this (FullOpts)
          44 (16.42 % of base) : 3814.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
Top method improvements (percentages):
         -24 (-4.51 % of base) : 96.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-3.70 % of base) : 401.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -16 (-1.76 % of base) : 14535.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -12 (-1.58 % of base) : 8971.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
          -4 (-0.90 % of base) : 13820.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 1005.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.82 % of base) : 1002.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.51 % of base) : 13209.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
          -4 (-0.30 % of base) : 3835.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
  
  
osx arm64
Diffs are based on 90,586 contexts (40,285 MinOpts, 50,301 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 47,361 (33.47%)
Overall (+12,056 bytes)
| Collection | 
Base size (bytes) | 
Diff size (bytes) | 
| benchmarks.run.osx.arm64.checked.mch | 
1,340,312 | 
+884 | 
| benchmarks.run_pgo.osx.arm64.checked.mch | 
2,401,052 | 
+8 | 
| benchmarks.run_tiered.osx.arm64.checked.mch | 
2,330,800 | 
-192 | 
| coreclr_tests.run.osx.arm64.checked.mch | 
528,604 | 
+100 | 
| libraries.pmi.osx.arm64.checked.mch | 
1,311,668 | 
+3,248 | 
| libraries_tests.run.osx.arm64.Release.mch | 
2,054,128 | 
-68 | 
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 
1,296,204 | 
+2,792 | 
| realworld.run.osx.arm64.checked.mch | 
2,049,968 | 
+5,284 | 
  
MinOpts (-640 bytes)
| Collection | 
Base size (bytes) | 
Diff size (bytes) | 
| benchmarks.run_pgo.osx.arm64.checked.mch | 
2,007,056 | 
-228 | 
| benchmarks.run_tiered.osx.arm64.checked.mch | 
2,061,072 | 
-352 | 
| coreclr_tests.run.osx.arm64.checked.mch | 
404,024 | 
-4 | 
| libraries_tests.run.osx.arm64.Release.mch | 
2,038,356 | 
-56 | 
  
FullOpts (+12,696 bytes)
| Collection | 
Base size (bytes) | 
Diff size (bytes) | 
| benchmarks.run.osx.arm64.checked.mch | 
1,339,888 | 
+884 | 
| benchmarks.run_pgo.osx.arm64.checked.mch | 
393,996 | 
+236 | 
| benchmarks.run_tiered.osx.arm64.checked.mch | 
269,728 | 
+160 | 
| coreclr_tests.run.osx.arm64.checked.mch | 
124,580 | 
+104 | 
| libraries.pmi.osx.arm64.checked.mch | 
1,310,832 | 
+3,248 | 
| libraries_tests.run.osx.arm64.Release.mch | 
15,772 | 
-12 | 
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 
1,296,204 | 
+2,792 | 
| realworld.run.osx.arm64.checked.mch | 
2,049,868 | 
+5,284 | 
  
Example diffs
benchmarks.run.osx.arm64.checked.mch
-28 (-10.61%) : 6979.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
@@ -10,120 +10,103 @@
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V01 tmp1         [V01,T00] (  8, 16   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V02 tmp2         [V02,T01] (  8, 16   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V03 tmp3         [V03,T02] (  8, 16   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
-;  V04 cse0         [V04,T03] (  4,  4   )    long  ->  x19         "CSE - aggressive"
-;  V05 cse1         [V05,T04] (  4,  4   )    long  ->  x21         "CSE - aggressive"
+;  V02 tmp2         [V02,T01] (  6, 12   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
+;  V03 tmp3         [V03,T02] (  6, 12   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeFileHandle>
+;  V04 cse0         [V04,T03] (  4,  4   )     ref  ->  x19         "CSE - aggressive"
+;  V05 cse1         [V05,T04] (  4,  4   )   byref  ->  x21         "CSE - aggressive"
+;  V06 cse2         [V06,T05] (  4,  4   )   byref  ->  x22         "CSE - aggressive"
+;  V07 cse3         [V07,T06] (  4,  4   )    long  ->  x23         "CSE - aggressive"
 ;
 ; Lcl frame size = 8
 
 G_M2338_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
+            stp     fp, lr, [sp, #-0x40]!
             stp     x19, x20, [sp, #0x18]
-            str     x21, [sp, #0x28]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-                       ;; size=16 bbWeight=1 PerfScore 3.50
+                      ;; size=20 bbWeight=1 PerfScore 4.50
 G_M2338_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            movz    x19, #0xD1FFAB1E
-            movk    x19, #0xD1FFAB1E LSL #16
-            movk    x19, #1 LSL #32
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
-            ; gcrRegs +[x0]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            str     xzr, [x20, #0x10]
-            add     x0, x20, #24
-            ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
-            strb    wzr, [x20, #0x1C]
-            mov     x0, x20
-            ; gcrRegs +[x0]
-            ; byrRegs -[x0]
-            bl      <unknown method>
-            ; gcrRegs -[x0]
-            add     x14, x20, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     xzr, [x20, #0x10]
-            movz    x21, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
-            movk    x21, #0xD1FFAB1E LSL #16
-            movk    x21, #2 LSL #32
-            mov     x14, x21
-            ; byrRegs -[x14]
-            mov     x15, x20
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x20]
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
-            ; gcrRegs +[x0]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            str     xzr, [x20, #0x10]
-            add     x0, x20, #24
-            ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
-            strb    wzr, [x20, #0x1C]
-            mov     x0, x20
-            ; gcrRegs +[x0]
-            ; byrRegs -[x0]
-            bl      <unknown method>
-            ; gcrRegs -[x0]
-            add     x14, x20, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     x15, [x20, #0x10]
-            add     x14, x21, #8
-            ; byrRegs -[x14]
-            mov     x15, x20
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x20]
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_DBLROUND
             ; gcrRegs +[x0]
             mov     x19, x0
             ; gcrRegs +[x19]
-            str     xzr, [x19, #0x10]
-            add     x0, x19, #24
+            mov     x20, x19
+            ; gcrRegs +[x20]
+            str     xzr, [x20, #0x10]
+            add     x21, x20, #24
+            ; byrRegs +[x21]
+            mov     w0, #4
             ; gcrRegs -[x0]
-            ; byrRegs +[x0]
-            mov     w1, #4
-            stlr    w1, [x0]
+            stlr    w0, [x21]
+            strb    wzr, [x20, #0x1C]
+            mov     x0, x20
+            ; gcrRegs +[x0]
+            bl      <unknown method>
+            ; gcrRegs -[x0]
+            add     x22, x20, #29
+            ; byrRegs +[x22]
+            mov     w14, #1
+            stlrb   w14, [x22]
+            str     xzr, [x20, #0x10]
+            movz    x23, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            movk    x23, #0xD1FFAB1E LSL #16
+            movk    x23, #2 LSL #32
+            mov     x14, x23
+            mov     x15, x20
+            ; gcrRegs +[x15]
+            bl      CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[x15 x20]
+            mov     x20, x19
+            ; gcrRegs +[x20]
+            str     xzr, [x20, #0x10]
+            mov     w0, #4
+            stlr    w0, [x21]
+            strb    wzr, [x20, #0x1C]
+            mov     x0, x20
+            ; gcrRegs +[x0]
+            bl      <unknown method>
+            ; gcrRegs -[x0]
+            mov     w14, #1
+            stlrb   w14, [x22]
+            str     x14, [x20, #0x10]
+            add     x14, x23, #8
+            mov     x15, x20
+            ; gcrRegs +[x15]
+            bl      CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[x15 x20]
+            str     xzr, [x19, #0x10]
+            mov     w0, #4
+            stlr    w0, [x21]
             strb    wzr, [x19, #0x1C]
             mov     x0, x19
             ; gcrRegs +[x0]
-            ; byrRegs -[x0]
             bl      <unknown method>
             ; gcrRegs -[x0]
-            add     x14, x19, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
+            ; byrRegs -[x21]
+            mov     w14, #1
+            stlrb   w14, [x22]
             mov     x14, #2
-            ; byrRegs -[x14]
             str     x14, [x19, #0x10]
-            add     x14, x21, #16
+            add     x14, x23, #16
             mov     x15, x19
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x15 x19]
-                     ;; size=232 bbWeight=1 PerfScore 41.00
+            ; byrRegs -[x22]
+                       ;; size=196 bbWeight=1 PerfScore 35.50
 G_M2338_IG03:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=20 bbWeight=1 PerfScore 6.00
 
-; Total bytes of code 264, prolog size 16, PerfScore 49.50, instruction count 66, allocated bytes for code 264 (MethodHash=536af6dd) for method Interop+Sys+FileDescriptors:.cctor() (FullOpts)
+; Total bytes of code 236, prolog size 20, PerfScore 46.00, instruction count 59, allocated bytes for code 236 (MethodHash=536af6dd) for method Interop+Sys+FileDescriptors:.cctor() (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +117,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 66 (0x00042) Actual length = 264 (0x000108)
+  Function Length   : 59 (0x0003b) Actual length = 236 (0x0000ec)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,9 +125,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
+    E6          save_next
     C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
-    E4          end
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
 
  
-48 (-10.53%) : 9542.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute
@@ -8,22 +8,18 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Type>
-;  V01 loc0         [V01,T04] (  5,  4   )     ref  ->  x20         class-hnd single-def <System.Collections.Hashtable>
-;  V02 loc1         [V02,T02] (  7,  5   )     ref  ->  x22         class-hnd <System.Attribute[]>
-;  V03 loc2         [V03,T12] (  4,  1   )     ref  ->  [fp+0x18]  class-hnd exact EH-live spill-single-def <System.Object>
+;  V00 arg0         [V00,T00] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Type>
+;  V01 loc0         [V01,T02] (  5,  4   )     ref  ->  x20         class-hnd single-def <System.Collections.Hashtable>
+;  V02 loc1         [V02,T01] (  7,  5   )     ref  ->  x22         class-hnd <System.Attribute[]>
+;  V03 loc2         [V03,T08] (  4,  1   )     ref  ->  [fp+0x18]  class-hnd exact EH-live spill-single-def <System.Object>
 ;  V04 loc3         [V04    ] (  6,  2.50)   ubyte  ->  [fp+0x20]  do-not-enreg[X] addr-exposed ld-addr-op
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T03] (  3,  4.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T10] (  3,  1.25)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T00] (  5,  6.75)     ref  ->  x22         class-hnd "spilling QMark2" <System.Attribute[]>
-;  V09 tmp4         [V09,T07] (  3,  2.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V10 tmp5         [V10,T11] (  3,  1.25)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V11 tmp6         [V11,T05] (  5,  3.75)     ref  ->  x22         class-hnd "spilling QMark2" <System.Attribute[]>
-;  V12 tmp7         [V12,T08] (  2,  2   )   ubyte  ->   x0         "Inlining Arg"
-;  V13 PSPSym       [V13,T13] (  1,  1   )    long  ->  [fp+0x28]  do-not-enreg[V] "PSPSym"
-;  V14 cse0         [V14,T06] (  4,  3   )    long  ->  x21         "CSE - aggressive"
-;  V15 cse1         [V15,T09] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V06 tmp1         [V06,T06] (  2,  2   )   ubyte  ->   x0         "Inlining Arg"
+;  V07 tmp2         [V07,T03] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
+;  V08 tmp3         [V08,T05] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V09 PSPSym       [V09,T09] (  1,  1   )    long  ->  [fp+0x28]  do-not-enreg[V] "PSPSym"
+;  V10 cse0         [V10,T04] (  4,  3   )    long  ->  x21         "CSE - aggressive"
+;  V11 cse1         [V11,T07] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
 ;
 ; Lcl frame size = 32
 
@@ -33,7 +29,7 @@ G_M8794_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x21, x22, [sp, #0x40]
             mov     fp, sp
             add     x1, sp, #80
-            str     x1, [fp, #0x28]   // [V13 PSPSym]
+            str     x1, [fp, #0x28]    // [V09 PSPSym]
             mov     x19, x0
             ; gcrRegs +[x19]
                        ;; size=28 bbWeight=1 PerfScore 5.50
@@ -57,44 +53,29 @@ G_M8794_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x22, x1
-            ; gcrRegs +[x22]
-            cbz     x22, G_M8794_IG05
-                       ;; size=56 bbWeight=1 PerfScore 18.50
-G_M8794_IG03:        ; bbWeight=0.25, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            ldr     x0, [x22]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            cmp     x0, x2
-            beq     G_M8794_IG05
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M8794_IG04:        ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x22]
-            mov     x0, x2
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             mov     x22, x0
             ; gcrRegs +[x22]
-                     ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M8794_IG05:        ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbz     x22, G_M8794_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M8794_IG06:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x19-x20]
+            cbz     x22, G_M8794_IG05
+                       ;; size=72 bbWeight=1 PerfScore 21.00
+G_M8794_IG03:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x19-x20]
             mov     x0, x22
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8794_IG07:        ; bbWeight=1, epilog, nogc, extend
+G_M8794_IG04:        ; bbWeight=1, epilog, nogc, extend
             ldp     x21, x22, [sp, #0x40]
             ldp     x19, x20, [sp, #0x30]
             ldp     fp, lr, [sp], #0x50
             ret     lr
                        ;; size=16 bbWeight=1 PerfScore 4.00
-G_M8794_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M8794_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0 x22] +[x19-x20]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -105,11 +86,11 @@ G_M8794_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=1800
             ; GC ptr vars +{V03}
             str     wzr, [fp, #0x20]   // [V04 loc3]
                        ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M8794_IG09:        ; bbWeight=0.50, gcVars=0000000000001000 {V03}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8794_IG06:        ; bbWeight=0.50, gcVars=0000000000000100 {V03}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
             ldrb    w1, [fp, #0x20]    // [V04 loc3]
-            cbz     w1, G_M8794_IG11
+            cbz     w1, G_M8794_IG08
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M8794_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8794_IG07:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x19-x20]
             movz    x1, #0xD1FFAB1E      // code for System.Threading.Monitor:ThrowLockTakenException()
             movk    x1, #0xD1FFAB1E LSL #16
@@ -119,14 +100,14 @@ G_M8794_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcr arg pop 0
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M8794_IG11:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M8794_IG08:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0 x19-x20]
             add     x1, fp, #32    // [V04 loc3]
             bl      <unknown method>
             ; gcrRegs -[x0]
             ; gcr arg pop 0
             ldrb    w0, [fp, #0x20]    // [V04 loc3]
-            cbnz    w0, G_M8794_IG12
+            cbnz    w0, G_M8794_IG09
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
@@ -140,7 +121,7 @@ G_M8794_IG11:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=52 bbWeight=0.50 PerfScore 6.00
-G_M8794_IG12:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M8794_IG09:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     x0, x20
             ; gcrRegs +[x0]
             mov     x1, x19
@@ -151,33 +132,17 @@ G_M8794_IG12:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x22, x1
-            ; gcrRegs +[x22]
-            cbz     x22, G_M8794_IG15
-                       ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M8794_IG13:        ; bbWeight=0.25, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            ldr     x0, [x22]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            cmp     x0, x2
-            beq     G_M8794_IG15
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M8794_IG14:        ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x22]
-            mov     x0, x2
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             mov     x22, x0
             ; gcrRegs +[x22]
-                     ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M8794_IG15:        ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbnz    x22, G_M8794_IG16
+            cbnz    x22, G_M8794_IG10
             mov     x0, x19
-            ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
@@ -200,45 +165,45 @@ G_M8794_IG15:        ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=
             blr     x3
             ; gcrRegs -[x0-x2 x19-x20]
             ; gcr arg pop 0
-                      ;; size=68 bbWeight=0.50 PerfScore 7.50
-G_M8794_IG16:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+                      ;; size=108 bbWeight=0.50 PerfScore 11.75
+G_M8794_IG10:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ldrb    w0, [fp, #0x20] // [V04 loc3]
-            cbz     w0, G_M8794_IG06
+            cbz     w0, G_M8794_IG03
             ldr     x0, [fp, #0x18]    // [V03 loc2]
             ; gcrRegs +[x0]
             ; GC ptr vars -{V03}
             bl      <unknown method>
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            b       G_M8794_IG06
+            b       G_M8794_IG03
                         ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M8794_IG17:        ; bbWeight=0, gcVars=0000000000001000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M8794_IG11:        ; bbWeight=0, gcVars=0000000000000100 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
             ; gcrRegs -[x22]
-            ; GC ptr vars +{V03 V12}
+            ; GC ptr vars +{V03 V08}
             stp     fp, lr, [sp, #-0x40]!
             stp     x19, x20, [sp, #0x20]
             stp     x21, x22, [sp, #0x30]
             add     x3, fp, #80
             str     x3, [sp, #0x18]
                        ;; size=20 bbWeight=0 PerfScore 0.00
-G_M8794_IG18:        ; bbWeight=0, gcVars=0000000000001000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8794_IG12:        ; bbWeight=0, gcVars=0000000000000100 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
             ldrb    w0, [fp, #0x20] // [V04 loc3]
-            cbz     w0, G_M8794_IG19
+            cbz     w0, G_M8794_IG13
             ldr     x0, [fp, #0x18]    // [V03 loc2]
             ; gcrRegs +[x0]
-            ; GC ptr vars -{V03 V12}
+            ; GC ptr vars -{V03 V08}
             bl      <unknown method>
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M8794_IG19:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M8794_IG13:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
             ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 456, prolog size 28, PerfScore 58.25, instruction count 114, allocated bytes for code 456 (MethodHash=544edda5) for method System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
+; Total bytes of code 408, prolog size 28, PerfScore 57.00, instruction count 102, allocated bytes for code 408 (MethodHash=544edda5) for method System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -249,7 +214,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 101 (0x00065) Actual length = 404 (0x000194)
+  Function Length   : 89 (0x00059) Actual length = 356 (0x000164)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -286,4 +251,4 @@ Unwind Info:
 
 *************** EH table for System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[]
 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M8794_IG09..G_M8794_IG16) handled by [G_M8794_IG17..END) (fault)
+EH#0: try [G_M8794_IG06..G_M8794_IG10) handled by [G_M8794_IG11..END) (fault)
  
-20 (-5.49%) : 3126.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
@@ -7,42 +7,40 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  4,  4   )     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
+;  V00 this         [V00,T00] (  7,  5.50)     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
 ;  V01 arg1         [V01,T02] (  4,  3   )   ubyte  ->  x20         single-def
-;  V02 loc0         [V02,T12] (  3,  2.50)     ref  ->  x23         class-hnd single-def <<unknown class>>
+;  V02 loc0         [V02,T11] (  3,  2.50)     ref  ->  x22         class-hnd single-def <<unknown class>>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V06 tmp3         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp4         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp5         [V08,T08] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V08 tmp5         [V08,T07] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;  V09 tmp6         [V09,T05] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V10 tmp7         [V10,T15] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V11 tmp8         [V11,T16] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V12 cse0         [V12,T07] (  5,  3.50)     ref  ->  x22         "CSE - aggressive"
-;  V13 cse1         [V13,T06] (  8,  3.80)    long  ->  x21         "CSE - aggressive"
-;  V14 rat0         [V14,T03] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V15 rat1         [V15,T04] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V16 rat2         [V16,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V17 rat3         [V17,T09] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V18 rat4         [V18,T13] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V19 rat5         [V19,T10] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V20 rat6         [V20,T14] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V21 rat7         [V21,T11] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V10 tmp7         [V10,T14] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V11 tmp8         [V11,T15] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V12 cse0         [V12,T06] (  8,  3.80)    long  ->  x21         "CSE - aggressive"
+;  V13 rat0         [V13,T03] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V14 rat1         [V14,T04] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V15 rat2         [V15,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V16 rat3         [V16,T08] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V17 rat4         [V17,T12] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V18 rat5         [V18,T09] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat6         [V19,T13] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V20 rat7         [V20,T10] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M18513_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x18]
-            stp     x21, x22, [sp, #0x28]
-            str     x23, [sp, #0x38]
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
+            str     x0, [fp, #0x18]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     w20, w1
-                      ;; size=32 bbWeight=1 PerfScore 6.50
+                      ;; size=28 bbWeight=1 PerfScore 5.50
 G_M18513_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x21, [x19]
             mov     x0, x21
@@ -59,56 +57,53 @@ G_M18513_IG04:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.20 PerfScore 0.50
 G_M18513_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x19, #0x08]
-            ; gcrRegs +[x22]
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            mov     x23, x0
-            ; gcrRegs +[x23]
-            cbz     x23, G_M18513_IG11
-                       ;; size=20 bbWeight=1 PerfScore 6.00
-G_M18513_IG06:        ; bbWeight=0.50, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x22]
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            cbz     x22, G_M18513_IG11
+                       ;; size=16 bbWeight=1 PerfScore 5.50
+G_M18513_IG06:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x11, [x0, #0x40]
             cbz     x11, G_M18513_IG08
                        ;; size=16 bbWeight=0.50 PerfScore 5.00
-G_M18513_IG07:        ; bbWeight=0.40, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG07:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             b       G_M18513_IG09
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG08:        ; bbWeight=0.10, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG08:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0.10 PerfScore 0.35
-G_M18513_IG09:        ; bbWeight=0.50, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG09:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             uxtb    w1, w20
-            mov     x0, x23
+            mov     x0, x22
             ; gcrRegs +[x0]
             ldr     x2, [x11]
                        ;; size=12 bbWeight=0.50 PerfScore 2.00
 G_M18513_IG10:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[x0 x23] +[x22]
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[x0 x22]
             tst     w20, #255
             beq     G_M18513_IG16
             ldr     x0, [x21, #0x38]
@@ -116,79 +111,77 @@ G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480
             ldr     x0, [x0, #0x38]
             cbz     x0, G_M18513_IG13
                        ;; size=24 bbWeight=0.50 PerfScore 5.75
-G_M18513_IG12:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG12:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M18513_IG14
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG13:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG13:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M18513_IG14:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            mov     x1, x22
+G_M18513_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG16
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG16
             movn    w0, #0
             ; gcrRegs -[x0]
-                      ;; size=40 bbWeight=0.50 PerfScore 3.50
+                       ;; size=40 bbWeight=0.50 PerfScore 6.00
 G_M18513_IG15:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M18513_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+                     ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M18513_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x0, [x0, #0x30]
             cbz     x0, G_M18513_IG18
                        ;; size=16 bbWeight=0.50 PerfScore 5.00
-G_M18513_IG17:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG17:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M18513_IG19
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG18:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG18:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M18513_IG19:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x1, x22
+G_M18513_IG19:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             ldr     x2, [x2]
-                     ;; size=20 bbWeight=0.50 PerfScore 2.50
+                       ;; size=20 bbWeight=0.50 PerfScore 3.75
 G_M18513_IG20:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0.50 PerfScore 3.00
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 364, prolog size 32, PerfScore 62.60, instruction count 91, allocated bytes for code 364 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
+; Total bytes of code 344, prolog size 28, PerfScore 61.85, instruction count 86, allocated bytes for code 344 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -199,7 +192,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 91 (0x0005b) Actual length = 364 (0x00016c)
+  Function Length   : 86 (0x00056) Actual length = 344 (0x000158)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
...
  
+44 (+14.29%) : 5412.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpanSystem.__Canon:System.Span`1System.__Canon
@@ -8,26 +8,29 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  3.60)    long  ->  x20         single-def
+;  V00 TypeCtx      [V00,T01] (  7,  4.28)    long  ->  x20         single-def
 ;  V01 arg0         [V01,T00] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]>
 ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op <System.Span`1[System.__Canon]>
-;  V03 loc1         [V03,T06] (  4,  2   )     int  ->  x21        
-;  V04 loc2         [V04,T05] (  4,  2   )     ref  ->  x22         class-hnd single-def <<unknown class>>
+;  V03 loc1         [V03,T08] (  4,  2   )     int  ->  x21        
+;  V04 loc2         [V04,T07] (  4,  2   )     ref  ->  x22         class-hnd single-def <<unknown class>>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T07] (  3,  2   )    long  ->   x2         "spilling helperCall"
+;  V06 tmp1         [V06,T09] (  3,  2   )    long  ->   x2         "spilling helperCall"
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V09 tmp4         [V09    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V10 tmp5         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V12 tmp7         [V12,T08] (  2,  2   )   byref  ->  x19         single-def "Inlining Arg"
+;  V12 tmp7         [V12,T10] (  2,  2   )   byref  ->  x19         single-def "Inlining Arg"
 ;* V13 tmp8         [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp9         [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V15 tmp10        [V15,T03] (  3,  2.50)   byref  ->   x0         "field V02._reference (fldOffset=0x0)" P-INDEP
-;  V16 tmp11        [V16,T04] (  3,  2.50)     int  ->   x1         "field V02._length (fldOffset=0x8)" P-INDEP
-;  V17 tmp12        [V17,T09] (  2,  1   )   byref  ->   x0         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;  V18 tmp13        [V18,T10] (  2,  1   )     int  ->   x1         "field V07._length (fldOffset=0x8)" P-INDEP
+;  V15 tmp10        [V15,T04] (  3,  2.50)   byref  ->   x0         "field V02._reference (fldOffset=0x0)" P-INDEP
+;  V16 tmp11        [V16,T05] (  3,  2.50)     int  ->   x1         "field V02._length (fldOffset=0x8)" P-INDEP
+;  V17 tmp12        [V17,T11] (  2,  1   )   byref  ->   x0         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V18 tmp13        [V18,T12] (  2,  1   )     int  ->   x1         "field V07._length (fldOffset=0x8)" P-INDEP
 ;  V19 rat0         [V19,T02] (  3,  2.80)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;* V20 rat1         [V20,T13] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V21 rat2         [V21,T03] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V22 rat3         [V22,T06] (  2,  1.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
@@ -45,7 +48,7 @@ G_M30960_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             mov     x0, xzr
             ; byrRegs +[x0]
             mov     w1, wzr
-            cbz     x19, G_M30960_IG10
+            cbz     x19, G_M30960_IG13
                         ;; size=12 bbWeight=1 PerfScore 2.00
 G_M30960_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[x0]
@@ -68,7 +71,7 @@ G_M30960_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
 G_M30960_IG04:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
             ldr     w0, [x22, #0x08]
             cmp     w0, w21
-            blo     G_M30960_IG11
+            blo     G_M30960_IG14
             ldr     x0, [x20, #0x38]
             ldr     x2, [x0, #0x10]
             cbz     x2, G_M30960_IG06
@@ -81,7 +84,7 @@ G_M30960_IG06:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=000
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x2, x0
                        ;; size=24 bbWeight=0.10 PerfScore 0.35
 G_M30960_IG07:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
@@ -105,9 +108,26 @@ G_M30960_IG07:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
             ; gcrRegs -[x19]
                        ;; size=60 bbWeight=0.50 PerfScore 8.00
 G_M30960_IG08:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x20, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M30960_IG10
+                       ;; size=16 bbWeight=0.50 PerfScore 3.75
+G_M30960_IG09:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M30960_IG11
+                       ;; size=8 bbWeight=0.40 PerfScore 1.60
+G_M30960_IG10:        ; bbWeight=0.18, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x20
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.18 PerfScore 0.54
+G_M30960_IG11:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             add     x19, x22, #16
             ; byrRegs +[x19]
-            tbz     w21, #31, G_M30960_IG09
+            tbz     w21, #31, G_M30960_IG12
             movz    x0, #8
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
@@ -121,19 +141,19 @@ G_M30960_IG08:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
             blr     x2
             ; gcrRegs -[x22]
                        ;; size=52 bbWeight=0.50 PerfScore 5.00
-G_M30960_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+G_M30960_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
             mov     x0, x19
             ; byrRegs +[x0]
             sxtw    w1, w21
                        ;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M30960_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, epilog, nogc
+G_M30960_IG13:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, epilog, nogc
             ; byrRegs -[x19]
             ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
                        ;; size=16 bbWeight=1 PerfScore 4.00
-G_M30960_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M30960_IG14:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; byrRegs -[x0]
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported()
             movk    x0, #0xD1FFAB1E LSL #16
@@ -143,7 +163,7 @@ G_M30960_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 308, prolog size 20, PerfScore 39.25, instruction count 77, allocated bytes for code 308 (MethodHash=041e870f) for method System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 352, prolog size 20, PerfScore 45.14, instruction count 88, allocated bytes for code 352 (MethodHash=041e870f) for method System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -154,7 +174,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 77 (0x0004d) Actual length = 308 (0x000134)
+  Function Length   : 88 (0x00058) Actual length = 352 (0x000160)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+40 (+15.38%) : 1250.dasm - System.Array:IndexOfSystem.__Canon:int (FullOpts)
@@ -8,11 +8,11 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T02] (  5,  4.36)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )     ref  ->  x19         class-hnd single-def <System.__Canon[]>
-;  V02 arg1         [V02,T06] (  3,  3   )     ref  ->  x22         ld-addr-op class-hnd single-def <System.__Canon>
-;  V03 arg2         [V03,T01] (  5,  5   )     int  ->  x20         single-def
-;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x21         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )     ref  ->  x20         class-hnd single-def <System.__Canon[]>
+;  V02 arg1         [V02,T07] (  3,  3   )     ref  ->  x23         ld-addr-op class-hnd single-def <System.__Canon>
+;  V03 arg2         [V03,T02] (  5,  5   )     int  ->  x21         single-def
+;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x22         single-def
 ;* V05 loc0         [V05    ] (  0,  0   )     int  ->  zero-ref   
 ;* V06 loc1         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;* V07 loc2         [V07    ] (  0,  0   )     int  ->  zero-ref   
@@ -24,80 +24,96 @@
 ;* V13 tmp4         [V13    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V15 tmp6         [V15,T04] (  3,  6   )     ref  ->   x0         single-def "argument with side effect"
-;  V16 cse0         [V16,T09] (  3,  3   )     int  ->   x1         "CSE - aggressive"
-;  V17 rat0         [V17,T08] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V18 rat1         [V18,T05] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V19 rat2         [V19,T07] (  3,  4.48)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V16 cse0         [V16,T10] (  3,  3   )     int  ->   x0         "CSE - aggressive"
+;* V17 rat0         [V17,T11] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V18 rat1         [V18,T05] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat2         [V19,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat3         [V20,T06] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V21 rat4         [V21,T08] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M13831_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x20]
-            stp     x21, x22, [sp, #0x30]
+            stp     x19, x20, [sp, #0x18]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x19, x1
-            ; gcrRegs +[x19]
-            mov     x22, x2
-            ; gcrRegs +[x22]
-            mov     w20, w3
-            mov     w21, w4
-                       ;; size=36 bbWeight=1 PerfScore 6.50
-G_M13831_IG02:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M13831_IG08
-            ldr     w1, [x19, #0x08]
-            cmp     w1, w20
-            blo     G_M13831_IG09
-            sub     w1, w1, w20
-            cmp     w1, w21
-            blo     G_M13831_IG10
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M13831_IG05
-                       ;; size=44 bbWeight=1 PerfScore 15.00
-G_M13831_IG03:        ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M13831_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M13831_IG04:        ; bbWeight=0.64, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            b       G_M13831_IG06
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M13831_IG05:        ; bbWeight=0.36, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     x23, x2
+            ; gcrRegs +[x23]
+            mov     w21, w3
+            mov     w22, w4
+                       ;; size=44 bbWeight=1 PerfScore 8.00
+G_M13831_IG02:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M13831_IG10
+            ldr     w0, [x20, #0x08]
+            cmp     w0, w21
+            blo     G_M13831_IG11
+            sub     w0, w0, w21
+            cmp     w0, w22
+            blo     G_M13831_IG12
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M13831_IG04
+                       ;; size=40 bbWeight=1 PerfScore 14.50
+G_M13831_IG03:        ; bbWeight=0.20, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x1, x0
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M13831_IG04:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M13831_IG07
+                       ;; size=16 bbWeight=1 PerfScore 7.50
+G_M13831_IG05:        ; bbWeight=0.80, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M13831_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M13831_IG06:        ; bbWeight=0.64, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            b       G_M13831_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M13831_IG07:        ; bbWeight=0.36, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M13831_IG06:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x1
+G_M13831_IG08:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E      // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs +[x0]
-            mov     x1, x19
+            mov     x1, x20
             ; gcrRegs +[x1]
-            mov     x2, x22
+            mov     x2, x23
             ; gcrRegs +[x2]
-            mov     w3, w20
-            mov     w4, w21
+            mov     w3, w21
+            mov     w4, w22
             ldr     x5, [x0]
             ldr     x5, [x5, #0x50]
             ldr     x5, [x5]
             blr     x5
-            ; gcrRegs -[x0-x2 x19 x22]
-                       ;; size=56 bbWeight=1 PerfScore 18.00
-G_M13831_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
+            ; gcrRegs -[x0-x2 x20 x23]
+                       ;; size=52 bbWeight=1 PerfScore 17.50
+G_M13831_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 4.00
-G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                      ;; size=20 bbWeight=1 PerfScore 6.00
+G_M13831_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             mov     w0, #2
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -106,7 +122,7 @@ G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             blr     x1
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_IndexMustBeLessOrEqual()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
@@ -114,7 +130,7 @@ G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
@@ -123,7 +139,7 @@ G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 260, prolog size 20, PerfScore 48.42, instruction count 65, allocated bytes for code 260 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
+; Total bytes of code 300, prolog size 24, PerfScore 59.02, instruction count 75, allocated bytes for code 300 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +150,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 65 (0x00041) Actual length = 260 (0x000104)
+  Function Length   : 75 (0x0004b) Actual length = 300 (0x00012c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,10 +158,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
-    E4          end
-    E4          end
 
  
+40 (+20.83%) : 9345.dasm - System.Array:SortSystem.__Canon (FullOpts)
@@ -8,86 +8,102 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  4.36)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )     ref  ->   x1         class-hnd single-def <System.__Canon[]>
-;  V02 arg1         [V02,T02] (  4,  4   )     ref  ->  x19         class-hnd single-def <System.Comparison`1[System.__Canon]>
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )     ref  ->  x20         class-hnd single-def <System.__Canon[]>
+;  V02 arg1         [V02,T02] (  4,  4   )     ref  ->  x21         class-hnd single-def <System.Comparison`1[System.__Canon]>
 ;* V03 loc0         [V03    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[System.__Canon]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
 ;* V06 tmp2         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp3         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp4         [V08,T07] (  2,  4   )     int  ->  x21         "Inlining Arg"
-;  V09 tmp5         [V09,T06] (  2,  4   )   byref  ->  x20         single-def "Inlining Arg"
+;  V08 tmp4         [V08,T08] (  2,  4   )     int  ->  x20         "Inlining Arg"
+;  V09 tmp5         [V09,T07] (  2,  4   )   byref  ->  x22         single-def "Inlining Arg"
 ;* V10 tmp6         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp7         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp8         [V12    ] (  0,  0   )   byref  ->  zero-ref    "field V03._reference (fldOffset=0x0)" P-INDEP
 ;* V13 tmp9         [V13    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0x8)" P-INDEP
-;  V14 tmp10        [V14,T09] (  2,  2   )   byref  ->  x20         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;  V15 tmp11        [V15,T10] (  2,  2   )     int  ->  x21         "field V05._length (fldOffset=0x8)" P-INDEP
-;  V16 tmp12        [V16,T08] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V17 rat0         [V17,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V18 rat1         [V18,T03] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V19 rat2         [V19,T04] (  3,  4.48)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V14 tmp10        [V14,T10] (  2,  2   )   byref  ->  x22         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;  V15 tmp11        [V15,T11] (  2,  2   )     int  ->  x20         "field V05._length (fldOffset=0x8)" P-INDEP
+;  V16 tmp12        [V16,T09] (  2,  4   )    long  ->   x0         "argument with side effect"
+;* V17 rat0         [V17,T12] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V18 rat1         [V18,T03] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat2         [V19,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat3         [V20,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V21 rat4         [V21,T05] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M37190_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
-            mov     x19, x2
-            ; gcrRegs +[x19]
-                       ;; size=24 bbWeight=1 PerfScore 5.00
-G_M37190_IG02:        ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x1]
-            cbz     x1, G_M37190_IG08
-            cbz     x19, G_M37190_IG09
-            add     x20, x1, #16
-            ; byrRegs +[x20]
-            ldr     w21, [x1, #0x08]
-            ldr     x1, [x0, #0x38]
-            ; gcrRegs -[x1]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M37190_IG05
-                       ;; size=32 bbWeight=1 PerfScore 13.00
-G_M37190_IG03:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
-            ldr     x2, [x1, #0x18]
-            cbz     x2, G_M37190_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M37190_IG04:        ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
-            mov     x0, x2
-            b       G_M37190_IG06
-                       ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M37190_IG05:        ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+            str     x0, [fp, #0x18]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     x21, x2
+            ; gcrRegs +[x21]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M37190_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M37190_IG10
+            cbz     x21, G_M37190_IG11
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M37190_IG04
+                       ;; size=20 bbWeight=1 PerfScore 9.00
+G_M37190_IG03:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-                       ;; size=16 bbWeight=0.36 PerfScore 0.90
-G_M37190_IG06:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
-            mov     x1, x20
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M37190_IG04:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            add     x22, x20, #16
+            ; byrRegs +[x22]
+            ldr     w20, [x20, #0x08]
+            ; gcrRegs -[x20]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M37190_IG07
+                       ;; size=24 bbWeight=1 PerfScore 11.00
+G_M37190_IG05:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M37190_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M37190_IG06:        ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            b       G_M37190_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M37190_IG07:        ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M37190_IG08:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            mov     x1, x22
             ; byrRegs +[x1]
-            mov     w2, w21
-            mov     x3, x19
+            mov     w2, w20
+            mov     x3, x21
             ; gcrRegs +[x3]
             movz    x4, #0xD1FFAB1E      // code for <unknown method>
             movk    x4, #0xD1FFAB1E LSL #16
             movk    x4, #1 LSL #32
             ldr     x4, [x4]
             blr     x4
-            ; gcrRegs -[x3 x19]
-            ; byrRegs -[x1 x20]
+            ; gcrRegs -[x3 x21]
+            ; byrRegs -[x1 x22]
                         ;; size=32 bbWeight=1 PerfScore 7.00
-G_M37190_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+G_M37190_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
-G_M37190_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                      ;; size=16 bbWeight=1 PerfScore 4.00
+G_M37190_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             mov     w0, #2
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -96,7 +112,7 @@ G_M37190_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             blr     x1
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M37190_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37190_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     w0, #29
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -106,7 +122,7 @@ G_M37190_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 192, prolog size 20, PerfScore 35.06, instruction count 48, allocated bytes for code 192 (MethodHash=c2626eb9) for method System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
+; Total bytes of code 232, prolog size 20, PerfScore 42.52, instruction count 58, allocated bytes for code 232 (MethodHash=c2626eb9) for method System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -117,7 +133,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 48 (0x00030) Actual length = 192 (0x0000c0)
+  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)
@@ -125,9 +141,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
benchmarks.run_pgo.osx.arm64.checked.mch
-36 (-19.15%) : 9452.dasm - System.Threading.ThreadPool+<>c:<.cctor>b_520(System.Object):this (Tier1)
@@ -10,11 +10,10 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.Threading.ThreadPool+<>c>
-;  V01 arg1         [V01,T01] (  5,  3   )     ref  ->  x19         class-hnd single-def <System.Object>
-;  V02 loc0         [V02,T02] (  5,  4   )     ref  ->   x0         class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox>
+;  V01 arg1         [V01,T00] (  4,  3   )     ref  ->  x19         class-hnd single-def <System.Object>
+;  V02 loc0         [V02,T01] (  5,  4   )     ref  ->   x0         class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[System.Threading.Tasks.VoidTaskResult,System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14]>
-;  V05 rat0         [V05,T00] (  5,  7   )     ref  ->   x0         class-hnd "replacement local" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
 ;
 ; Lcl frame size = 8
 
@@ -26,64 +25,47 @@ G_M44863_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
                        ;; size=16 bbWeight=1 PerfScore 3.00
 G_M44863_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            cbnz    x0, G_M44863_IG05
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44863_IG03:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M44863_IG09
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            cmp     x1, x2
-            bne     G_M44863_IG07
-            mov     x1, xzr
-            movz    x2, #0xD1FFAB1E      // code for <unknown method>
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            ldr     x2, [x2]
-                       ;; size=48 bbWeight=1 PerfScore 12.00
-G_M44863_IG04:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x19, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x20
-            br      x2
-            ; gcr arg pop 0
-                       ;; size=12 bbWeight=1 PerfScore 4.00
-G_M44863_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            cmp     x1, x2
-            beq     G_M44863_IG03
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M44863_IG06:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            b       G_M44863_IG03
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M44863_IG07:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+            cbz     x0, G_M44863_IG06
+            ldr     x1, [x0]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #1 LSL #32
+            cmp     x1, x2
+            bne     G_M44863_IG04
+            mov     x1, xzr
+            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #1 LSL #32
+            ldr     x2, [x2]
+                       ;; size=68 bbWeight=1 PerfScore 15.00
+G_M44863_IG03:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x19, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x20
+            br      x2
+            ; gcr arg pop 0
+                       ;; size=12 bbWeight=1 PerfScore 4.00
+G_M44863_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x19]
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
             movk    x11, #0xD1FFAB1E LSL #16
             movk    x11, #1 LSL #32
             ldr     x1, [x11]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M44863_IG08:        ; bbWeight=0, epilog, nogc, extend
+G_M44863_IG05:        ; bbWeight=0, epilog, nogc, extend
             ldr     x19, [sp, #0x18]
             ldp     fp, lr, [sp], #0x20
             br      x1
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M44863_IG09:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M44863_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0] +[x19]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -97,7 +79,7 @@ G_M44863_IG09:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 188, prolog size 16, PerfScore 23.50, instruction count 47, allocated bytes for code 188 (MethodHash=743050c0) for method System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
+; Total bytes of code 152, prolog size 16, PerfScore 22.00, instruction count 38, allocated bytes for code 152 (MethodHash=743050c0) for method System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -108,7 +90,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 47 (0x0002f) Actual length = 188 (0x0000bc)
+  Function Length   : 38 (0x00026) Actual length = 152 (0x000098)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-36 (-6.29%) : 21057.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
@@ -9,22 +9,21 @@
 ; 2 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] ( 14,  8   )     ref  ->  x19         class-hnd single-def <System.Object>
-;  V01 arg1         [V01,T03] (  3,  2   )     ref  ->  x20         class-hnd single-def <System.Threading.Thread>
-;  V02 loc0         [V02,T04] (  4,  2   )     ref  ->   x0         class-hnd single-def <<unknown class>>
+;  V00 arg0         [V00,T00] ( 13,  7.78)     ref  ->  x19         class-hnd single-def <System.Object>
+;  V01 arg1         [V01,T02] (  3,  2   )     ref  ->  x20         class-hnd single-def <System.Threading.Thread>
+;  V02 loc0         [V02,T03] (  4,  2   )     ref  ->   x0         class-hnd single-def <<unknown class>>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd 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.Threading.Channels.AsyncOperation`1[ubyte]>
 ;* V06 tmp3         [V06    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V07 tmp4         [V07,T08] (  2,  0   )     ref  ->   x1         class-hnd exact single-def "dup spill" <System.Threading.ContextCallback>
-;  V08 tmp5         [V08,T09] (  2,  0   )     ref  ->  x20         class-hnd exact single-def "impAppendStmt" <System.Threading.ExecutionContext>
+;  V07 tmp4         [V07,T07] (  2,  0   )     ref  ->   x1         class-hnd exact single-def "dup spill" <System.Threading.ContextCallback>
+;  V08 tmp5         [V08,T08] (  2,  0   )     ref  ->  x20         class-hnd exact single-def "impAppendStmt" <System.Threading.ExecutionContext>
 ;* V09 tmp6         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V10 tmp7         [V10,T06] (  4,  0   )     ref  ->   x1        
-;  V11 tmp8         [V11,T07] (  4,  0   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.Threading.ContextCallback>
-;  V12 tmp9         [V12,T05] (  3,  1.59)     ref  ->   x2         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-;  V13 tmp10        [V13,T10] (  2,  0   )     ref  ->   x1         single-def "argument with side effect"
+;  V10 tmp7         [V10,T05] (  4,  0   )     ref  ->   x1        
+;  V11 tmp8         [V11,T06] (  4,  0   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.Threading.ContextCallback>
+;  V12 tmp9         [V12,T04] (  3,  1.59)     ref  ->   x2         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;  V13 tmp10        [V13,T09] (  2,  0   )     ref  ->   x1         single-def "argument with side effect"
 ;  V14 rat0         [V14,T01] (  6,  8   )     ref  ->   x0         class-hnd "replacement local" <<unknown class>>
-;  V15 rat1         [V15,T02] (  5,  7.44)     ref  ->   x2         class-hnd "replacement local" <System.Threading.IThreadPoolWorkItem>
 ;
 ; Lcl frame size = 8
 
@@ -58,7 +57,7 @@ G_M60059_IG04:        ; bbWeight=0.19, gcrefRegs=180000 {x19 x20}, byrefRegs=000
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
+            bl      CORINFO_HELP_ISINSTANCEOFARRAY
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             b       G_M60059_IG06
@@ -69,50 +68,31 @@ G_M60059_IG05:        ; bbWeight=0.31, gcrefRegs=180000 {x19 x20}, byrefRegs=000
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=0.31 PerfScore 0.15
 G_M60059_IG06:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
-            cbnz    x0, G_M60059_IG15
-            mov     x2, x19
-            ; gcrRegs +[x2]
-            cbz     x2, G_M60059_IG09
-                       ;; size=12 bbWeight=1 PerfScore 2.50
-G_M60059_IG07:        ; bbWeight=0.50, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x20]
-            ldr     x1, [x2]
-            movz    x0, #0xD1FFAB1E
-            movk    x0, #0xD1FFAB1E LSL #16
-            movk    x0, #1 LSL #32
-            cmp     x1, x0
-            beq     G_M60059_IG09
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M60059_IG08:        ; bbWeight=0.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x2]
+            cbnz    x0, G_M60059_IG12
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
+            ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
-            ; gcrRegs -[x1] +[x0]
+            bl      CORINFO_HELP_INITINSTCLASS
+            ; gcrRegs -[x1 x20] +[x0]
             ; gcr arg pop 0
-            mov     x2, x0
-            ; gcrRegs +[x2]
-                       ;; size=24 bbWeight=0.22 PerfScore 0.77
-G_M60059_IG09:        ; bbWeight=1, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+            cbz     x0, G_M60059_IG14
+                       ;; size=28 bbWeight=1 PerfScore 5.00
+G_M60059_IG07:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
-            cbz     x2, G_M60059_IG17
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M60059_IG10:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x2]
             ldr     x14, [x19]
             movz    x15, #0xD1FFAB1E
             movk    x15, #0xD1FFAB1E LSL #16
             movk    x15, #1 LSL #32
             cmp     x14, x15
-            bne     G_M60059_IG13
+            bne     G_M60059_IG10
                      ;; size=24 bbWeight=1 PerfScore 6.00
-G_M60059_IG11:        ; bbWeight=0.53, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M60059_IG08:        ; bbWeight=0.53, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x14, [x19, #0x28]
             ; gcrRegs +[x14]
-            cbnz    x14, G_M60059_IG18
+            cbnz    x14, G_M60059_IG15
             ldr     x2, [x19, #0x10]
             ; gcrRegs +[x2]
             movz    x14, #0xD1FFAB1E
@@ -133,14 +113,14 @@ G_M60059_IG11:        ; bbWeight=0.53, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ldr     x2, [x2, #0x18]
             ; gcrRegs -[x2]
                        ;; size=48 bbWeight=0.53 PerfScore 11.66
-G_M60059_IG12:        ; bbWeight=0.53, epilog, nogc, extend
+G_M60059_IG09:        ; bbWeight=0.53, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x2
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.53 PerfScore 2.65
-G_M60059_IG13:        ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M60059_IG10:        ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0-x1]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -149,14 +129,14 @@ G_M60059_IG13:        ; bbWeight=0.47, gcVars=0000000000000000 {}, gcrefRegs=800
             movk    x11, #1 LSL #32
             ldr     x1, [x11]
                        ;; size=20 bbWeight=0.47 PerfScore 2.35
-G_M60059_IG14:        ; bbWeight=0.47, epilog, nogc, extend
+G_M60059_IG11:        ; bbWeight=0.47, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x1
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.47 PerfScore 2.35
-G_M60059_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M60059_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x19] +[x20]
             mov     x1, x20
             ; gcrRegs +[x1]
@@ -164,14 +144,14 @@ G_M60059_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100001
             ldr     x2, [x2, #0x50]
             ldr     x2, [x2, #0x18]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M60059_IG16:        ; bbWeight=0, epilog, nogc, extend
+G_M60059_IG13:        ; bbWeight=0, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x2
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M60059_IG17:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M60059_IG14:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0-x1 x20] +[x19]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -185,27 +165,29 @@ G_M60059_IG17:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
             ldr     x2, [x2]
             blr     x2
             ; gcr arg pop 0
-            b       G_M60059_IG10
+            b       G_M60059_IG07
                       ;; size=48 bbWeight=0 PerfScore 0.00
-G_M60059_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M60059_IG15:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x20, [x19, #0x28]
             ; gcrRegs +[x20]
             movz    x0, #64
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, wzr
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #2 LSL #32
             ldr     x1, [x0]
             ; gcrRegs +[x1]
-            cbnz    x1, G_M60059_IG19
+            cbnz    x1, G_M60059_IG16
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             mov     x21, x0
@@ -215,7 +197,8 @@ G_M60059_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, wzr
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
             movk    x1, #0xD1FFAB1E LSL #16
@@ -224,6 +207,7 @@ G_M60059_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs +[x1]
             mov     x0, x21
             ; gcrRegs +[x0]
+            ; byrRegs -[x0]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
@@ -238,7 +222,8 @@ G_M60059_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, wzr
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x14, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
             movk    x14, #0xD1FFAB1E LSL #16
@@ -247,10 +232,11 @@ G_M60059_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x15]
+            ; byrRegs -[x0]
             mov     x1, x21
             ; gcrRegs +[x1]
                        ;; size=180 bbWeight=0 PerfScore 0.00
-G_M60059_IG19:        ; bbWeight=0, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
+G_M60059_IG16:        ; bbWeight=0, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x21]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -261,7 +247,7 @@ G_M60059_IG19:        ; bbWeight=0, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=000
             movk    x3, #1 LSL #32
             ldr     x3, [x3]
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M60059_IG20:        ; bbWeight=0, epilog, nogc, extend
+G_M60059_IG17:        ; bbWeight=0, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
@@ -269,7 +255,7 @@ G_M60059_IG20:        ; bbWeight=0, epilog, nogc, extend
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 572, prolog size 24, PerfScore 42.20, instruction count 143, allocated bytes for code 572 (MethodHash=13841564) for method System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
+; Total bytes of code 536, prolog size 24, PerfScore 39.92, instruction count 134, allocated bytes for code 536 (MethodHash=13841564) for method System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -280,7 +266,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
...
  
-20 (-5.49%) : 14790.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
@@ -8,42 +8,40 @@
 ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2719
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  4,  4   )     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
+;  V00 this         [V00,T00] (  7,  5   )     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
 ;  V01 arg1         [V01,T03] (  4,  3   )   ubyte  ->  x20         single-def
-;  V02 loc0         [V02,T11] (  3,  2   )     ref  ->  x23         class-hnd single-def <<unknown class>>
+;  V02 loc0         [V02,T10] (  3,  2   )     ref  ->  x22         class-hnd single-def <<unknown class>>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V06 tmp3         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp4         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp5         [V08,T12] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V08 tmp5         [V08,T11] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;  V09 tmp6         [V09,T07] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V10 tmp7         [V10,T16] (  2,  0   )    long  ->   x0         "argument with side effect"
+;  V10 tmp7         [V10,T15] (  2,  0   )    long  ->   x0         "argument with side effect"
 ;  V11 tmp8         [V11,T08] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V12 cse0         [V12,T10] (  5,  3   )     ref  ->  x22         "CSE - aggressive"
-;  V13 cse1         [V13,T09] (  8,  3.20)    long  ->  x21         "CSE - aggressive"
-;  V14 rat0         [V14,T04] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V15 rat1         [V15,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V16 rat2         [V16,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V17 rat3         [V17,T13] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V18 rat4         [V18,T14] (  3,  0   )    long  ->   x0         "runtime lookup"
-;  V19 rat5         [V19,T15] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V20 rat6         [V20,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V21 rat7         [V21,T02] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V12 cse0         [V12,T09] (  8,  3.20)    long  ->  x21         "CSE - aggressive"
+;  V13 rat0         [V13,T04] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V14 rat1         [V14,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V15 rat2         [V15,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V16 rat3         [V16,T12] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V17 rat4         [V17,T13] (  3,  0   )    long  ->   x0         "runtime lookup"
+;  V18 rat5         [V18,T14] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat6         [V19,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat7         [V20,T02] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M18513_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x18]
-            stp     x21, x22, [sp, #0x28]
-            str     x23, [sp, #0x38]
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
+            str     x0, [fp, #0x18]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     w20, w1
-                      ;; size=32 bbWeight=1 PerfScore 6.50
+                      ;; size=28 bbWeight=1 PerfScore 5.50
 G_M18513_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x21, [x19]
             mov     x0, x21
@@ -60,118 +58,114 @@ G_M18513_IG04:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.20 PerfScore 0.50
 G_M18513_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x19, #0x08]
-            ; gcrRegs +[x22]
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            mov     x23, x0
-            ; gcrRegs +[x23]
-            cbnz    x23, G_M18513_IG11
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            cbnz    x22, G_M18513_IG11
             tst     w20, #255
             bne     G_M18513_IG15
-                        ;; size=28 bbWeight=1 PerfScore 7.50
-G_M18513_IG06:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x23]
+                      ;; size=24 bbWeight=1 PerfScore 7.00
+G_M18513_IG06:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0 x22]
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x0, [x0, #0x30]
             cbz     x0, G_M18513_IG08
                        ;; size=16 bbWeight=1 PerfScore 10.00
-G_M18513_IG07:        ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG07:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M18513_IG09
                        ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M18513_IG08:        ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG08:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M18513_IG09:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x1, x22
+G_M18513_IG09:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             ldr     x2, [x2]
-                     ;; size=20 bbWeight=1 PerfScore 5.00
+                      ;; size=20 bbWeight=1 PerfScore 7.50
 G_M18513_IG10:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=1 PerfScore 6.00
-G_M18513_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[x1 x22] +[x23]
+                       ;; size=16 bbWeight=1 PerfScore 4.00
+G_M18513_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[x1] +[x22]
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x11, [x0, #0x40]
             cbz     x11, G_M18513_IG12
             b       G_M18513_IG13
                        ;; size=20 bbWeight=0 PerfScore 0.00
-G_M18513_IG12:        ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG12:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M18513_IG13:        ; bbWeight=0, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG13:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             uxtb    w1, w20
-            mov     x0, x23
+            mov     x0, x22
             ; gcrRegs +[x0]
             ldr     x2, [x11]
                        ;; size=12 bbWeight=0 PerfScore 0.00
 G_M18513_IG14:        ; bbWeight=0, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0 PerfScore 0.00
-G_M18513_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[x0 x23] +[x22]
+                       ;; size=16 bbWeight=0 PerfScore 0.00
+G_M18513_IG15:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[x0 x22]
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x0, [x0, #0x38]
             cbz     x0, G_M18513_IG16
             b       G_M18513_IG17
                        ;; size=20 bbWeight=0 PerfScore 0.00
-G_M18513_IG16:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG16:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0 PerfScore 0.00
-G_M18513_IG17:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            mov     x1, x22
+G_M18513_IG17:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG06
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG06
@@ -179,14 +173,13 @@ G_M18513_IG17:        ; bbWeight=0, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {
             ; gcrRegs -[x0]
                        ;; size=40 bbWeight=0 PerfScore 0.00
 G_M18513_IG18:        ; bbWeight=0, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=20 bbWeight=0 PerfScore 0.00
+                      ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 364, prolog size 32, PerfScore 51.60, instruction count 91, allocated bytes for code 364 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
+; Total bytes of code 344, prolog size 28, PerfScore 50.60, instruction count 86, allocated bytes for code 344 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -197,7 +190,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 91 (0x0005b) Actual length = 364 (0x00016c)
+  Function Length   : 86 (0x00056) Actual length = 344 (0x000158)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -211,9 +204,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
...
  
+48 (+36.36%) : 9600.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,82 +9,103 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] (  3,  3   )     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T02] (  5,  4.20)    long  ->   x1         single-def
-;  V02 arg1         [V02,T03] (  4,  4   )   byref  ->  x19         single-def
-;  V03 loc0         [V03,T01] (  7,  7   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T01] (  7,  5.56)    long  ->  x19         single-def
+;  V02 arg1         [V02,T03] (  4,  4   )   byref  ->  x20         single-def
+;  V03 loc0         [V03,T02] (  7,  7   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T00] (  4,  8   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T00] (  4,  8   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  4   )    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T04] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T05] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  3.20)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG06
-            ldr     x0, [x1, #0x38]
+            cbnz    x0, G_M58319_IG09
+            ldr     x0, [x19, #0x38]
             ; gcrRegs -[x0]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG04
                        ;; size=20 bbWeight=1 PerfScore 11.00
-G_M58319_IG03:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG03:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG05
                        ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M58319_IG04:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG04:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                      ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M58319_IG05:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG05:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG07
+                       ;; size=36 bbWeight=1 PerfScore 11.00
+G_M58319_IG06:        ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG08
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M58319_IG07:        ; bbWeight=0.36, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M58319_IG08:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=1 PerfScore 7.00
-G_M58319_IG06:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=1 PerfScore 3.50
+G_M58319_IG09:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 29.90, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 41.18, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -95,7 +116,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,9 +124,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+48 (+36.36%) : 17944.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,84 +9,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T04] (  3,  2.80)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T02] (  5,  3.96)    long  ->   x1         single-def
-;  V02 arg1         [V02,T03] (  4,  3.80)   byref  ->  x19         single-def
-;  V03 loc0         [V03,T01] (  7,  6.20)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V00 this         [V00,T04] (  3,  2.80)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  5.05)    long  ->  x19         single-def
+;  V02 arg1         [V02,T03] (  4,  3.80)   byref  ->  x20         single-def
+;  V03 loc0         [V03,T02] (  7,  6.20)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T00] (  4,  6.40)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T01] (  4,  6.40)     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  3.20)    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  3.20)    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  4.48)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  2.56)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.80 PerfScore 5.60
-G_M58319_IG04:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M58319_IG05:        ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.16, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                      ;; size=20 bbWeight=0.16 PerfScore 0.48
-G_M58319_IG06:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.80 PerfScore 8.80
+G_M58319_IG07:        ; bbWeight=0.64, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.64 PerfScore 2.56
+G_M58319_IG08:        ; bbWeight=0.29, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.29 PerfScore 0.86
+G_M58319_IG09:        ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.80 PerfScore 5.60
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.80 PerfScore 2.80
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 26.82, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 35.74, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -97,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +126,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+48 (+36.36%) : 23012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,84 +9,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T04] (  3,  2.83)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T02] (  5,  4   )    long  ->   x1         single-def
-;  V02 arg1         [V02,T03] (  4,  3.83)   byref  ->  x19         single-def
-;  V03 loc0         [V03,T01] (  7,  6.33)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V00 this         [V00,T04] (  3,  2.83)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  5.13)    long  ->  x19         single-def
+;  V02 arg1         [V02,T03] (  4,  3.83)   byref  ->  x20         single-def
+;  V03 loc0         [V03,T02] (  7,  6.33)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T00] (  4,  6.67)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T01] (  4,  6.67)     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  3.33)    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  3.33)    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  4.67)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  4.67)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  2.67)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.83, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.83, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.83 PerfScore 5.83
-G_M58319_IG04:        ; bbWeight=0.67, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.67, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.67 PerfScore 0.67
-G_M58319_IG05:        ; bbWeight=0.17, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.17, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                      ;; size=20 bbWeight=0.17 PerfScore 0.50
-G_M58319_IG06:        ; bbWeight=0.83, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.83, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.83 PerfScore 9.17
+G_M58319_IG07:        ; bbWeight=0.67, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.67 PerfScore 2.67
+G_M58319_IG08:        ; bbWeight=0.30, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.30 PerfScore 0.90
+G_M58319_IG09:        ; bbWeight=0.83, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.83 PerfScore 5.83
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.83 PerfScore 2.92
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 27.33, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 36.65, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -97,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +126,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
benchmarks.run_tiered.osx.arm64.checked.mch
-20 (-5.49%) : 17256.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
@@ -7,42 +7,40 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  4,  4   )     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
+;  V00 this         [V00,T00] (  7,  5.50)     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
 ;  V01 arg1         [V01,T02] (  4,  3   )   ubyte  ->  x20         single-def
-;  V02 loc0         [V02,T12] (  3,  2.50)     ref  ->  x23         class-hnd single-def <<unknown class>>
+;  V02 loc0         [V02,T11] (  3,  2.50)     ref  ->  x22         class-hnd single-def <<unknown class>>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V06 tmp3         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp4         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp5         [V08,T08] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V08 tmp5         [V08,T07] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;  V09 tmp6         [V09,T05] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V10 tmp7         [V10,T15] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V11 tmp8         [V11,T16] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V12 cse0         [V12,T07] (  5,  3.50)     ref  ->  x22         "CSE - aggressive"
-;  V13 cse1         [V13,T06] (  8,  3.80)    long  ->  x21         "CSE - aggressive"
-;  V14 rat0         [V14,T03] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V15 rat1         [V15,T04] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V16 rat2         [V16,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V17 rat3         [V17,T09] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V18 rat4         [V18,T13] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V19 rat5         [V19,T10] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V20 rat6         [V20,T14] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V21 rat7         [V21,T11] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V10 tmp7         [V10,T14] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V11 tmp8         [V11,T15] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V12 cse0         [V12,T06] (  8,  3.80)    long  ->  x21         "CSE - aggressive"
+;  V13 rat0         [V13,T03] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V14 rat1         [V14,T04] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V15 rat2         [V15,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V16 rat3         [V16,T08] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V17 rat4         [V17,T12] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V18 rat5         [V18,T09] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat6         [V19,T13] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V20 rat7         [V20,T10] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M18513_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x18]
-            stp     x21, x22, [sp, #0x28]
-            str     x23, [sp, #0x38]
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
+            str     x0, [fp, #0x18]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     w20, w1
-                      ;; size=32 bbWeight=1 PerfScore 6.50
+                      ;; size=28 bbWeight=1 PerfScore 5.50
 G_M18513_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x21, [x19]
             mov     x0, x21
@@ -59,56 +57,53 @@ G_M18513_IG04:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.20 PerfScore 0.50
 G_M18513_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x19, #0x08]
-            ; gcrRegs +[x22]
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            mov     x23, x0
-            ; gcrRegs +[x23]
-            cbz     x23, G_M18513_IG11
-                       ;; size=20 bbWeight=1 PerfScore 6.00
-G_M18513_IG06:        ; bbWeight=0.50, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x22]
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            cbz     x22, G_M18513_IG11
+                       ;; size=16 bbWeight=1 PerfScore 5.50
+G_M18513_IG06:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x11, [x0, #0x40]
             cbz     x11, G_M18513_IG08
                        ;; size=16 bbWeight=0.50 PerfScore 5.00
-G_M18513_IG07:        ; bbWeight=0.40, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG07:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             b       G_M18513_IG09
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG08:        ; bbWeight=0.10, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG08:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0.10 PerfScore 0.35
-G_M18513_IG09:        ; bbWeight=0.50, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG09:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             uxtb    w1, w20
-            mov     x0, x23
+            mov     x0, x22
             ; gcrRegs +[x0]
             ldr     x2, [x11]
                        ;; size=12 bbWeight=0.50 PerfScore 2.00
 G_M18513_IG10:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[x0 x23] +[x22]
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[x0 x22]
             tst     w20, #255
             beq     G_M18513_IG16
             ldr     x0, [x21, #0x38]
@@ -116,79 +111,77 @@ G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480
             ldr     x0, [x0, #0x38]
             cbz     x0, G_M18513_IG13
                        ;; size=24 bbWeight=0.50 PerfScore 5.75
-G_M18513_IG12:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG12:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M18513_IG14
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG13:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG13:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M18513_IG14:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            mov     x1, x22
+G_M18513_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG16
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG16
             movn    w0, #0
             ; gcrRegs -[x0]
-                      ;; size=40 bbWeight=0.50 PerfScore 3.50
+                       ;; size=40 bbWeight=0.50 PerfScore 6.00
 G_M18513_IG15:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M18513_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+                     ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M18513_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x0, [x0, #0x30]
             cbz     x0, G_M18513_IG18
                        ;; size=16 bbWeight=0.50 PerfScore 5.00
-G_M18513_IG17:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG17:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M18513_IG19
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG18:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG18:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M18513_IG19:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x1, x22
+G_M18513_IG19:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             ldr     x2, [x2]
-                     ;; size=20 bbWeight=0.50 PerfScore 2.50
+                       ;; size=20 bbWeight=0.50 PerfScore 3.75
 G_M18513_IG20:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0.50 PerfScore 3.00
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 364, prolog size 32, PerfScore 62.60, instruction count 91, allocated bytes for code 364 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
+; Total bytes of code 344, prolog size 28, PerfScore 61.85, instruction count 86, allocated bytes for code 344 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -199,7 +192,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 91 (0x0005b) Actual length = 364 (0x00016c)
+  Function Length   : 86 (0x00056) Actual length = 344 (0x000158)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
...
  
-24 (-4.51%) : 3382.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:GetListByName(ulong,int,ulong,int,int,int):System.Canon[]:this (Tier1)
@@ -9,23 +9,23 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 10,  6.50)     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-;  V01 arg1         [V01,T09] (  3,  2.50)    long  ->   x1         single-def
-;  V02 arg2         [V02,T05] (  4,  3.50)     int  ->   x2         single-def
-;  V03 arg3         [V03,T06] (  4,  3.50)    long  ->  x21         single-def
-;  V04 arg4         [V04,T07] (  4,  3.50)     int  ->  x22         single-def
-;  V05 arg5         [V05,T08] (  3,  3   )     int  ->  x23         single-def
-;  V06 arg6         [V06,T02] (  4,  4   )     int  ->  x20         single-def
+;  V01 arg1         [V01,T08] (  3,  2.50)    long  ->   x1         single-def
+;  V02 arg2         [V02,T04] (  4,  3.50)     int  ->   x2         single-def
+;  V03 arg3         [V03,T05] (  4,  3.50)    long  ->  x21         single-def
+;  V04 arg4         [V04,T06] (  4,  3.50)     int  ->  x22         single-def
+;  V05 arg5         [V05,T07] (  3,  3   )     int  ->  x23         single-def
+;  V06 arg6         [V06,T01] (  4,  4   )     int  ->  x20         single-def
 ;  V07 loc0         [V07    ] ( 10,  6.50)  struct (24) [fp+0x18]  do-not-enreg[XSF] addr-exposed ld-addr-op <System.RuntimeType+RuntimeTypeCache+Filter>
-;  V08 loc1         [V08,T03] ( 10,  5.62)     ref  ->  x21         class-hnd <<unknown class>>
+;  V08 loc1         [V08,T03] (  9,  5.50)     ref  ->  x21         class-hnd <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T11] (  4,  2.75)    long  ->   x1         "spilling helperCall"
-;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V12 tmp3         [V12,T01] (  5,  6.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.__Canon[]>
-;* V13 tmp4         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-;  V14 tmp5         [V14,T12] (  2,  2   )    long  ->  x21         "field V13.m_pStringHeap (fldOffset=0x0)" P-INDEP
-;  V15 tmp6         [V15,T13] (  2,  2   )     int  ->  x22         "field V13.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-;  V16 rat0         [V16,T10] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V17 rat1         [V17,T04] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp2         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
+;  V12 tmp3         [V12,T12] (  2,  2   )    long  ->  x21         "field V11.m_pStringHeap (fldOffset=0x0)" P-INDEP
+;  V13 tmp4         [V13,T13] (  2,  2   )     int  ->  x22         "field V11.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+;  V14 tmp5         [V14,T11] (  2,  4   )    long  ->   x0         "argument with side effect"
+;  V15 rat0         [V15,T09] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V16 rat1         [V16,T10] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V17 rat2         [V17,T02] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -192,38 +192,26 @@ G_M19047_IG13:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             ldr     x0, [x19]
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M19047_IG15
+            ldr     x2, [x1, #0x18]
+            cbz     x2, G_M19047_IG15
                       ;; size=20 bbWeight=1 PerfScore 13.00
 G_M19047_IG14:        ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x2
             b       G_M19047_IG16
-                     ;; size=4 bbWeight=0.80 PerfScore 0.80
+                        ;; size=8 bbWeight=0.80 PerfScore 1.20
 G_M19047_IG15:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            mov     x1, x0
-                       ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x21
-            ; gcrRegs +[x0]
-            cbz     x0, G_M19047_IG19
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19047_IG17:        ; bbWeight=0.25, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            cmp     x2, x1
-            beq     G_M19047_IG19
-                       ;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M19047_IG18:        ; bbWeight=0.12, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x1
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
+                       ;; size=16 bbWeight=0.20 PerfScore 0.50
+G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             mov     x1, x21
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1 x21] +[x0]
-                       ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M19047_IG19:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+                     ;; size=8 bbWeight=1 PerfScore 1.50
+G_M19047_IG17:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
@@ -239,7 +227,7 @@ RWD00   dd  G_M19047_IG05 - G_M19047_IG02
            dd  G_M19047_IG10 - G_M19047_IG02
 
 
-; Total bytes of code 532, prolog size 24, PerfScore 81.02, instruction count 133, allocated bytes for code 532 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
+; Total bytes of code 508, prolog size 24, PerfScore 79.95, instruction count 127, allocated bytes for code 508 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -250,7 +238,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 133 (0x00085) Actual length = 532 (0x000214)
+  Function Length   : 127 (0x0007f) Actual length = 508 (0x0001fc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-20 (-3.70%) : 4653.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object
@@ -10,23 +10,21 @@
 ;
 ;  V00 arg0         [V00,T00] (  9,  6   )     ref  ->  x19         class-hnd single-def <System.RuntimeType>
 ;  V01 arg1         [V01,T01] (  8,  5   )     int  ->  x20         single-def
-;* V02 loc0         [V02,T12] (  0,  0   )   ubyte  ->  zero-ref   
-;  V03 loc1         [V03,T06] (  3,  2   )   ubyte  ->  x21        
+;* V02 loc0         [V02,T11] (  0,  0   )   ubyte  ->  zero-ref   
+;  V03 loc1         [V03,T04] (  3,  2   )   ubyte  ->  x21        
 ;* V04 loc2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Object[]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T05] (  3,  2.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T13] (  3,  1.25)    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T03] (  5,  3.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.Object[]>
-;  V09 tmp4         [V09,T07] (  3,  1.50)     ref  ->   x0        
-;  V10 tmp5         [V10,T08] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-;  V11 tmp6         [V11,T04] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V12 tmp7         [V12,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
-;* V13 tmp8         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
-;* V14 tmp9         [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V15 tmp10        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V16 tmp11        [V16,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
-;  V17 cse0         [V17,T10] (  3,  1.50)    long  ->   x0         "CSE - moderate"
-;  V18 cse1         [V18,T09] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V06 tmp1         [V06,T06] (  3,  1.50)     ref  ->   x0        
+;  V07 tmp2         [V07,T07] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+;  V08 tmp3         [V08,T03] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V09 tmp4         [V09,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+;* V10 tmp5         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
+;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;* V12 tmp7         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;  V13 tmp8         [V13,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
+;  V14 tmp9         [V14,T05] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V15 cse0         [V15,T09] (  3,  1.50)    long  ->   x0         "CSE - moderate"
+;  V16 cse1         [V16,T08] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
 ;
 ; Lcl frame size = 8
 
@@ -94,7 +92,7 @@ G_M32569_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             b       G_M32569_IG07
@@ -105,16 +103,18 @@ G_M32569_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, #52
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #2 LSL #32
             ldr     x0, [x1]
             ; gcrRegs +[x0]
+            ; byrRegs -[x0]
                        ;; size=36 bbWeight=0.50 PerfScore 3.75
 G_M32569_IG07:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                      ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
@@ -124,10 +124,10 @@ G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs -[x19] +[x0]
             ; gcr arg pop 0
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=32 bbWeight=0.50 PerfScore 3.00
 G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
@@ -135,18 +135,20 @@ G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, #53
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #2 LSL #32
             ldr     x0, [x0]
             ; gcrRegs +[x0]
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=40 bbWeight=0.50 PerfScore 4.25
 G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
-            cbz     w20, G_M32569_IG14
+            cbz     w20, G_M32569_IG11
             mov     x0, x19
             ; gcrRegs +[x0]
             mov     w1, w20
@@ -159,43 +161,32 @@ G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            cbz     x0, G_M32569_IG13
-                       ;; size=40 bbWeight=0.50 PerfScore 4.50
-G_M32569_IG11:        ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #1 LSL #32
-            cmp     x2, x3
-            beq     G_M32569_IG13
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M32569_IG12:        ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            mov     x0, x3
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-                      ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            b       G_M32569_IG16
+                       ;; size=56 bbWeight=0.50 PerfScore 5.75
+G_M32569_IG11:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
             ldr     x0, [x19, #0x10]
-            cbz     x0, G_M32569_IG16
+            cbz     x0, G_M32569_IG13
             bl      <unknown method>
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
             ; gcrRegs +[x20]
-            cbz     x20, G_M32569_IG16
+            cbz     x20, G_M32569_IG13
             ldr     x0, [x20]
             ; gcrRegs -[x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            beq     G_M32569_IG15
+            beq     G_M32569_IG12
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
@@ -209,10 +200,10 @@ G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcrRegs -[x0 x19]
             ; gcr arg pop 0
                        ;; size=80 bbWeight=0.50 PerfScore 10.00
-G_M32569_IG15:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG17
+G_M32569_IG12:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M32569_IG14
                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20] +[x19]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -226,7 +217,7 @@ G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             mov     x20, x0
             ; gcrRegs +[x20]
                        ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -236,14 +227,14 @@ G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             ldr     x1, [x1]
             ldr     wzr, [x0]
                        ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M32569_IG18:        ; bbWeight=0.50, epilog, nogc, extend
+G_M32569_IG15:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x1
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x20]
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
@@ -251,7 +242,7 @@ G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
 
-; Total bytes of code 540, prolog size 24, PerfScore 64.94, instruction count 135, allocated bytes for code 540 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
+; Total bytes of code 520, prolog size 24, PerfScore 64.00, instruction count 130, allocated bytes for code 520 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -262,7 +253,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 135 (0x00087) Actual length = 540 (0x00021c)
+  Function Length   : 130 (0x00082) Actual length = 520 (0x000208)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+16 (+10.53%) : 2105.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable1[System.DateTimeOffset]]():System.Nullable1System.DateTimeOffset
@@ -44,27 +44,31 @@ G_M13724_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_BOX
+            bl      CORINFO_HELP_ISINSTANCEOF_EXCEPTION
             ; gcrRegs +[x0]
             str     x0, [fp, #0x10]    // [V04 tmp2]
-            ldr     x2, [fp, #0x10]  // [V04 tmp2]
-            ; gcrRegs +[x2]
-            ldr     x0, [fp, #0x38]    // [V00 RetBuf]
+            ldr     x1, [fp, #0x10]    // [V04 tmp2]
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_UNBOX
+            ; gcrRegs -[x1]
             ; byrRegs +[x0]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_UNBOX_NULLABLE
-            ; gcrRegs -[x2]
-            ; byrRegs -[x0]
-                       ;; size=120 bbWeight=1 PerfScore 25.50
+            ldr     x1, [fp, #0x38] // [V00 RetBuf]
+            ; byrRegs +[x1]
+            ldp     x2, x3, [x0]
+            stp     x2, x3, [x1]
+            ldr     x2, [x0, #0x10]
+            str     x2, [x1, #0x10]
+                       ;; size=136 bbWeight=1 PerfScore 34.50
 G_M13724_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x40
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 152, prolog size 20, PerfScore 33.00, instruction count 38, allocated bytes for code 152 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
+; Total bytes of code 168, prolog size 20, PerfScore 42.00, instruction count 42, allocated bytes for code 168 (MethodHash=d3e7ca63) for method MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -75,7 +79,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 38 (0x00026) Actual length = 152 (0x000098)
+  Function Length   : 42 (0x0002a) Actual length = 168 (0x0000a8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+40 (+15.38%) : 8417.dasm - System.Array:IndexOfSystem.__Canon:int (Tier1)
@@ -8,11 +8,11 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T02] (  5,  4.36)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )     ref  ->  x19         class-hnd single-def <System.__Canon[]>
-;  V02 arg1         [V02,T06] (  3,  3   )     ref  ->  x22         ld-addr-op class-hnd single-def <System.__Canon>
-;  V03 arg2         [V03,T01] (  5,  5   )     int  ->  x20         single-def
-;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x21         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )     ref  ->  x20         class-hnd single-def <System.__Canon[]>
+;  V02 arg1         [V02,T07] (  3,  3   )     ref  ->  x23         ld-addr-op class-hnd single-def <System.__Canon>
+;  V03 arg2         [V03,T02] (  5,  5   )     int  ->  x21         single-def
+;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x22         single-def
 ;* V05 loc0         [V05    ] (  0,  0   )     int  ->  zero-ref   
 ;* V06 loc1         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;* V07 loc2         [V07    ] (  0,  0   )     int  ->  zero-ref   
@@ -24,80 +24,96 @@
 ;* V13 tmp4         [V13    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V15 tmp6         [V15,T04] (  3,  6   )     ref  ->   x0         single-def "argument with side effect"
-;  V16 cse0         [V16,T09] (  3,  3   )     int  ->   x1         "CSE - aggressive"
-;  V17 rat0         [V17,T08] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V18 rat1         [V18,T05] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V19 rat2         [V19,T07] (  3,  4.48)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V16 cse0         [V16,T10] (  3,  3   )     int  ->   x0         "CSE - aggressive"
+;* V17 rat0         [V17,T11] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V18 rat1         [V18,T05] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat2         [V19,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat3         [V20,T06] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V21 rat4         [V21,T08] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M13831_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x20]
-            stp     x21, x22, [sp, #0x30]
+            stp     x19, x20, [sp, #0x18]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x19, x1
-            ; gcrRegs +[x19]
-            mov     x22, x2
-            ; gcrRegs +[x22]
-            mov     w20, w3
-            mov     w21, w4
-                       ;; size=36 bbWeight=1 PerfScore 6.50
-G_M13831_IG02:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M13831_IG08
-            ldr     w1, [x19, #0x08]
-            cmp     w1, w20
-            blo     G_M13831_IG09
-            sub     w1, w1, w20
-            cmp     w1, w21
-            blo     G_M13831_IG10
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M13831_IG05
-                       ;; size=44 bbWeight=1 PerfScore 15.00
-G_M13831_IG03:        ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M13831_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M13831_IG04:        ; bbWeight=0.64, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            b       G_M13831_IG06
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M13831_IG05:        ; bbWeight=0.36, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     x23, x2
+            ; gcrRegs +[x23]
+            mov     w21, w3
+            mov     w22, w4
+                       ;; size=44 bbWeight=1 PerfScore 8.00
+G_M13831_IG02:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M13831_IG10
+            ldr     w0, [x20, #0x08]
+            cmp     w0, w21
+            blo     G_M13831_IG11
+            sub     w0, w0, w21
+            cmp     w0, w22
+            blo     G_M13831_IG12
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M13831_IG04
+                       ;; size=40 bbWeight=1 PerfScore 14.50
+G_M13831_IG03:        ; bbWeight=0.20, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x1, x0
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M13831_IG04:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M13831_IG07
+                       ;; size=16 bbWeight=1 PerfScore 7.50
+G_M13831_IG05:        ; bbWeight=0.80, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M13831_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M13831_IG06:        ; bbWeight=0.64, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            b       G_M13831_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M13831_IG07:        ; bbWeight=0.36, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M13831_IG06:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x1
+G_M13831_IG08:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E      // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs +[x0]
-            mov     x1, x19
+            mov     x1, x20
             ; gcrRegs +[x1]
-            mov     x2, x22
+            mov     x2, x23
             ; gcrRegs +[x2]
-            mov     w3, w20
-            mov     w4, w21
+            mov     w3, w21
+            mov     w4, w22
             ldr     x5, [x0]
             ldr     x5, [x5, #0x50]
             ldr     x5, [x5]
             blr     x5
-            ; gcrRegs -[x0-x2 x19 x22]
-                       ;; size=56 bbWeight=1 PerfScore 18.00
-G_M13831_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
+            ; gcrRegs -[x0-x2 x20 x23]
+                       ;; size=52 bbWeight=1 PerfScore 17.50
+G_M13831_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 4.00
-G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                      ;; size=20 bbWeight=1 PerfScore 6.00
+G_M13831_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             mov     w0, #2
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -106,7 +122,7 @@ G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             blr     x1
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_IndexMustBeLessOrEqual()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
@@ -114,7 +130,7 @@ G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
@@ -123,7 +139,7 @@ G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_unix #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 260, prolog size 20, PerfScore 48.42, instruction count 65, allocated bytes for code 260 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
+; Total bytes of code 300, prolog size 24, PerfScore 59.02, instruction count 75, allocated bytes for code 300 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +150,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 65 (0x00041) Actual length = 260 (0x000104)
+  Function Length   : 75 (0x0004b) Actual length = 300 (0x00012c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,10 +158,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
-    E4          end
-    E4          end
 
  
+48 (+36.36%) : 3373.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -8,84 +8,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  3,  2.50)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T00] (  5,  3.60)    long  ->   x1         single-def
-;  V02 arg1         [V02,T01] (  4,  3.50)   byref  ->  x19         single-def
+;  V00 this         [V00,T03] (  3,  2.50)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  4.28)    long  ->  x19         single-def
+;  V02 arg1         [V02,T01] (  4,  3.50)   byref  ->  x20         single-def
 ;  V03 loc0         [V03,T02] (  7,  5   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T04] (  4,  4   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T04] (  4,  4   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  2   )    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  1.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG04:        ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.40, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M58319_IG05:        ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.10, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                      ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M58319_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.50 PerfScore 5.50
+G_M58319_IG07:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.40 PerfScore 1.60
+G_M58319_IG08:        ; bbWeight=0.18, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.18 PerfScore 0.54
+G_M58319_IG09:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.50 PerfScore 1.75
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 22.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 27.59, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -96,7 +117,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -104,9 +125,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
coreclr_tests.run.osx.arm64.checked.mch
-32 (-21.62%) : 2643.dasm - System.Linq.Enumerable:Containsint:ubyte (Tier1)
@@ -8,11 +8,10 @@
 ; with Dynamic PGO: edge weights are valid, and fgCalledCount is 7
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  5,  3   )     ref  ->  x19         class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
-;  V01 arg1         [V01,T02] (  4,  3   )     int  ->  x20         single-def
-;  V02 loc0         [V02,T03] (  3,  3   )     ref  ->   x0         class-hnd single-def <System.Collections.Generic.ICollection`1[int]>
+;  V00 arg0         [V00,T00] (  4,  3   )     ref  ->  x19         class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
+;  V01 arg1         [V01,T01] (  4,  3   )     int  ->  x20         single-def
+;  V02 loc0         [V02,T02] (  3,  3   )     ref  ->   x0         class-hnd single-def <System.Collections.Generic.ICollection`1[int]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 rat0         [V04,T00] (  5,  7   )     ref  ->   x0         class-hnd "replacement local" <System.Collections.Generic.ICollection`1[int]>
 ;
 ; Lcl frame size = 0
 
@@ -25,44 +24,28 @@ G_M63104_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             mov     w20, w1
                        ;; size=20 bbWeight=1 PerfScore 3.50
 G_M63104_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            cbz     x0, G_M63104_IG05
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M63104_IG03:        ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x0]
-            movz    x11, #0xD1FFAB1E
-            movk    x11, #0xD1FFAB1E LSL #16
-            movk    x11, #1 LSL #32
-            cmp     x1, x11
-            beq     G_M63104_IG05
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M63104_IG04:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0 PerfScore 0.00
-G_M63104_IG05:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M63104_IG07
+            cbz     x0, G_M63104_IG04
             mov     w1, w20
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
             movk    x11, #0xD1FFAB1E LSL #16
             movk    x11, #1 LSL #32
             ldr     x2, [x11]
-                        ;; size=24 bbWeight=1 PerfScore 6.00
-G_M63104_IG06:        ; bbWeight=1, epilog, nogc, extend
+                     ;; size=44 bbWeight=1 PerfScore 9.00
+G_M63104_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             br      x2
             ; gcr arg pop 0
                        ;; size=12 bbWeight=1 PerfScore 3.00
-G_M63104_IG07:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M63104_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -73,14 +56,14 @@ G_M63104_IG07:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
             movk    x3, #1 LSL #32
             ldr     x3, [x3]
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M63104_IG08:        ; bbWeight=0, epilog, nogc, extend
+G_M63104_IG05:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             br      x3
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 148, prolog size 20, PerfScore 17.00, instruction count 37, allocated bytes for code 148 (MethodHash=32f0097f) for method System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
+; Total bytes of code 116, prolog size 20, PerfScore 15.50, instruction count 29, allocated bytes for code 116 (MethodHash=32f0097f) for method System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -91,7 +74,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 37 (0x00025) Actual length = 148 (0x000094)
+  Function Length   : 29 (0x0001d) Actual length = 116 (0x000074)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-32 (-17.39%) : 2155.dasm - System.Threading.ThreadPool+<>c:<.cctor>b_520(System.Object):this (Tier1)
@@ -10,11 +10,10 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.Threading.ThreadPool+<>c>
-;  V01 arg1         [V01,T01] (  5,  3   )     ref  ->  x19         class-hnd single-def <System.Object>
-;  V02 loc0         [V02,T02] (  5,  4   )     ref  ->   x0         class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox>
+;  V01 arg1         [V01,T00] (  4,  3   )     ref  ->  x19         class-hnd single-def <System.Object>
+;  V02 loc0         [V02,T01] (  5,  4   )     ref  ->   x0         class-hnd single-def <System.Runtime.CompilerServices.IAsyncStateMachineBox>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[int,System.IO.Pipes.PipeStream+<ReadAsyncCore>d__82]>
-;  V05 rat0         [V05,T00] (  5,  7   )     ref  ->   x0         class-hnd "replacement local" <System.Runtime.CompilerServices.IAsyncStateMachineBox>
 ;
 ; Lcl frame size = 8
 
@@ -26,63 +25,47 @@ G_M44863_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
                        ;; size=16 bbWeight=1 PerfScore 3.00
 G_M44863_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            cbz     x0, G_M44863_IG05
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44863_IG03:        ; bbWeight=0.50, 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
-            beq     G_M44863_IG05
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M44863_IG04:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0 PerfScore 0.00
-G_M44863_IG05:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M44863_IG09
+            cbz     x0, G_M44863_IG06
             ldr     x1, [x0]
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             cmp     x1, x2
-            bne     G_M44863_IG07
+            bne     G_M44863_IG04
             mov     x1, xzr
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             ldr     x2, [x2]
-                     ;; size=48 bbWeight=1 PerfScore 12.00
-G_M44863_IG06:        ; bbWeight=1, epilog, nogc, extend
+                     ;; size=68 bbWeight=1 PerfScore 15.00
+G_M44863_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldr     x19, [sp, #0x18]
             ldp     fp, lr, [sp], #0x20
             br      x2
             ; gcr arg pop 0
                        ;; size=12 bbWeight=1 PerfScore 4.00
-G_M44863_IG07:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+G_M44863_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x19]
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
             movk    x11, #0xD1FFAB1E LSL #16
             movk    x11, #1 LSL #32
             ldr     x1, [x11]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M44863_IG08:        ; bbWeight=0, epilog, nogc, extend
+G_M44863_IG05:        ; bbWeight=0, epilog, nogc, extend
             ldr     x19, [sp, #0x18]
             ldp     fp, lr, [sp], #0x20
             br      x1
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M44863_IG09:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M44863_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0] +[x19]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -96,7 +79,7 @@ G_M44863_IG09:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 184, prolog size 16, PerfScore 23.50, instruction count 46, allocated bytes for code 184 (MethodHash=743050c0) for method System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
+; Total bytes of code 152, prolog size 16, PerfScore 22.00, instruction count 38, allocated bytes for code 152 (MethodHash=743050c0) for method System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -107,7 +90,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 46 (0x0002e) Actual length = 184 (0x0000b8)
+  Function Length   : 38 (0x00026) Actual length = 152 (0x000098)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-4 (-3.70%) : 3697.dasm - NullableTest6:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
@@ -7,9 +7,8 @@
 ;
 ;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [fp+0x28]  do-not-enreg[] class-hnd <System.IComparable>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02    ] (  1,  1   )  struct ( 8) [fp+0x20]  do-not-enreg[XS] addr-exposed "non-inline candidate call" <System.Nullable`1[ushort]>
+;  V02 tmp1         [V02    ] (  1,  1   )  struct ( 8) [fp+0x20]  do-not-enreg[S] "non-inline candidate call" <System.Nullable`1[ushort]>
 ;  V03 tmp2         [V03    ] (  1,  1   )     int  ->  [fp+0x1C]  do-not-enreg[] "argument with side effect"
-;  V04 tmp3         [V04    ] (  1,  1   )     int  ->  [fp+0x18]  do-not-enreg[] "argument with side effect"
 ;
 ; Lcl frame size = 32
 
@@ -19,17 +18,18 @@ G_M38958_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             str     x0, [fp, #0x28]    // [V00 arg0]
                        ;; size=12 bbWeight=1 PerfScore 2.50
 G_M38958_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            add     x0, fp, #32   // [V02 tmp1]
-            ldr     x2, [fp, #0x28]    // [V00 arg0]
-            ; gcrRegs +[x2]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_UNBOX_NULLABLE
-            ; gcrRegs -[x2]
-            ldr     w0, [fp, #0x20]    // [V02 tmp1]
-            str     w0, [fp, #0x18]    // [V04 tmp3]
+            ldr     x1, [fp, #0x28]  // [V00 arg0]
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_UNBOX
+            ; gcrRegs -[x1]
+            ; byrRegs +[x0]
+            ldr     w1, [x0]
+            str     w1, [fp, #0x20]
             mov     w0, wzr
+            ; byrRegs -[x0]
             movz    x1, #0xD1FFAB1E      // code for <unknown method>
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
@@ -37,19 +37,19 @@ G_M38958_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x1
             str     w0, [fp, #0x1C]    // [V03 tmp2]
             ldr     w1, [fp, #0x1C]    // [V03 tmp2]
-            ldr     w0, [fp, #0x18]  // [V04 tmp3]
+            ldr     w0, [fp, #0x20]  // [V02 tmp1]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             ldr     x2, [x2]
             blr     x2
-                       ;; size=88 bbWeight=1 PerfScore 24.50
+                     ;; size=84 bbWeight=1 PerfScore 25.00
 G_M38958_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 108, prolog size 8, PerfScore 29.00, instruction count 27, allocated bytes for code 108 (MethodHash=384b67d1) for method NullableTest6:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
+; Total bytes of code 104, prolog size 8, PerfScore 29.50, instruction count 26, allocated bytes for code 104 (MethodHash=384b67d1) for method NullableTest6:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -60,7 +60,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 27 (0x0001b) Actual length = 108 (0x00006c)
+  Function Length   : 26 (0x0001a) Actual length = 104 (0x000068)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+12 (+7.89%) : 3766.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
@@ -8,7 +8,7 @@
 ;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [fp+0x58]  do-not-enreg[] class-hnd <System.IComparable>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02    ] (  1,  1   )  struct (16) [fp+0x48]  do-not-enreg[SAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Decimal>
-;  V03 tmp2         [V03    ] (  1,  1   )  struct (24) [fp+0x30]  do-not-enreg[XS] addr-exposed "impAppendStmt" <System.Nullable`1[System.Decimal]>
+;  V03 tmp2         [V03    ] (  1,  1   )  struct (24) [fp+0x30]  do-not-enreg[S] "impAppendStmt" <System.Nullable`1[System.Decimal]>
 ;  V04 tmp3         [V04    ] (  1,  1   )  struct (24) [fp+0x18]  do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Decimal]>
 ;
 ; Lcl frame size = 80
@@ -19,15 +19,20 @@ G_M63921_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             str     x0, [fp, #0x58]    // [V00 arg0]
                        ;; size=12 bbWeight=1 PerfScore 2.50
 G_M63921_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            add     x0, fp, #48   // [V03 tmp2]
-            ldr     x2, [fp, #0x58]    // [V00 arg0]
-            ; gcrRegs +[x2]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_UNBOX_NULLABLE
-            ; gcrRegs -[x2]
+            ldr     x1, [fp, #0x58]   // [V00 arg0]
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_UNBOX
+            ; gcrRegs -[x1]
+            ; byrRegs +[x0]
+            ldp     x1, x2, [x0]
+            stp     x1, x2, [fp, #0x30]
+            ldr     x1, [x0, #0x10]
+            str     x1, [fp, #0x40]
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             ldr     x0, [x0]
@@ -54,13 +59,13 @@ G_M63921_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movk    x3, #1 LSL #32
             ldr     x3, [x3]
             blr     x3
-                       ;; size=132 bbWeight=1 PerfScore 38.50
+                        ;; size=144 bbWeight=1 PerfScore 47.00
 G_M63921_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x60
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 152, prolog size 8, PerfScore 43.00, instruction count 38, allocated bytes for code 152 (MethodHash=ae63064e) for method NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
+; Total bytes of code 164, prolog size 8, PerfScore 51.50, instruction count 41, allocated bytes for code 164 (MethodHash=ae63064e) for method NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -71,7 +76,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 38 (0x00026) Actual length = 152 (0x000098)
+  Function Length   : 41 (0x00029) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+12 (+8.33%) : 3949.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
@@ -8,7 +8,7 @@
 ;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [fp+0x68]  do-not-enreg[] class-hnd <System.Object>
 ;  V01 loc0         [V01    ] (  1,  1   )  struct (16) [fp+0x58]  do-not-enreg[SA] multireg-arg must-init ld-addr-op <System.Guid>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03    ] (  1,  1   )  struct (24) [fp+0x40]  do-not-enreg[XS] addr-exposed "impAppendStmt" <System.Nullable`1[System.Guid]>
+;  V03 tmp1         [V03    ] (  1,  1   )  struct (24) [fp+0x40]  do-not-enreg[S] "impAppendStmt" <System.Nullable`1[System.Guid]>
 ;  V04 tmp2         [V04    ] (  1,  1   )  struct (16) [fp+0x30]  do-not-enreg[SAR] multireg-arg multireg-ret "Return value temp for multireg return" <System.Guid>
 ;  V05 tmp3         [V05    ] (  1,  1   )  struct (24) [fp+0x18]  do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
 ;
@@ -22,17 +22,22 @@ G_M34635_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             str     x0, [fp, #0x68]    // [V00 arg0]
                        ;; size=20 bbWeight=1 PerfScore 4.50
 G_M34635_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            add     x0, fp, #64   // [V03 tmp1]
-            ldr     x2, [fp, #0x68]    // [V00 arg0]
-            ; gcrRegs +[x2]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_UNBOX_NULLABLE
-            ; gcrRegs -[x2]
+            ldr     x1, [fp, #0x68]   // [V00 arg0]
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_UNBOX
+            ; gcrRegs -[x1]
+            ; byrRegs +[x0]
+            ldp     x1, x2, [x0]
+            stp     x1, x2, [fp, #0x40]
+            ldr     w1, [x0, #0x10]
+            str     w1, [fp, #0x50]
             movi    v16.4s, #0
             str     q16, [fp, #0x58]   // [V01 loc0]
             ldr     x0, [fp, #0x58]    // [V01 loc0]
+            ; byrRegs -[x0]
             ldr     x1, [fp, #0x60]   // [V01 loc0+0x08]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
@@ -53,13 +58,13 @@ G_M34635_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movk    x3, #1 LSL #32
             ldr     x3, [x3]
             blr     x3
-                       ;; size=116 bbWeight=1 PerfScore 35.00
+                        ;; size=128 bbWeight=1 PerfScore 43.50
 G_M34635_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x70
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 144, prolog size 16, PerfScore 41.50, instruction count 36, allocated bytes for code 144 (MethodHash=607178b4) for method NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
+; Total bytes of code 156, prolog size 16, PerfScore 50.00, instruction count 39, allocated bytes for code 156 (MethodHash=607178b4) for method NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -70,7 +75,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
+  Function Length   : 39 (0x00027) Actual length = 156 (0x00009c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+28 (+9.86%) : 4219.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
@@ -8,7 +8,7 @@
 ;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [fp+0x268]  do-not-enreg[] class-hnd <System.Object>
 ;  V01 loc0         [V01    ] (  1,  1   )  struct (96) [fp+0x208]  do-not-enreg[S] must-init ld-addr-op <MixedAllStruct>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03    ] (  1,  1   )  struct (104) [fp+0x1A0]  do-not-enreg[XS] must-init addr-exposed "impAppendStmt" <System.Nullable`1[MixedAllStruct]>
+;  V03 tmp1         [V03    ] (  1,  1   )  struct (104) [fp+0x1A0]  do-not-enreg[S] must-init "impAppendStmt" <System.Nullable`1[MixedAllStruct]>
 ;  V04 tmp2         [V04    ] (  1,  1   )  struct (96) [fp+0x140]  do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <MixedAllStruct>
 ;  V05 tmp3         [V05    ] (  1,  1   )  struct (96) [fp+0xE0]  do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <MixedAllStruct>
 ;  V06 tmp4         [V06    ] (  1,  1   )  struct (104) [fp+0x78]  do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Nullable`1[MixedAllStruct]>
@@ -35,21 +35,34 @@ G_M13613_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             str     x0, [fp, #0xD1FFAB1E]  // [V00 arg0]
                        ;; size=64 bbWeight=1 PerfScore 12.50
 G_M13613_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            add     x0, fp, #0xD1FFAB1E   // [V03 tmp1]
-            ldr     x2, [fp, #0xD1FFAB1E]  // [V00 arg0]
-            ; gcrRegs +[x2]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_UNBOX_NULLABLE
-            ; gcrRegs -[x2]
+            ldr     x1, [fp, #0xD1FFAB1E] // [V00 arg0]
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_UNBOX
+            ; gcrRegs -[x1]
+            ; byrRegs +[x0]
+                       ;; size=20 bbWeight=1 PerfScore 4.50
+G_M13613_IG03:        ; bbWeight=1, nogc, extend
+            ldp     q16, q17, [x0]
+            stp     q16, q17, [fp, #0xD1FFAB1E]
+            ldp     q16, q17, [x0, #0x20]
+            stp     q16, q17, [fp, #0xD1FFAB1E]
+            ldp     q16, q17, [x0, #0x40]
+            stp     q16, q17, [fp, #0xD1FFAB1E]
+            ldr     x1, [x0, #0x60]
+            str     x1, [fp, #0xD1FFAB1E]
+                       ;; size=32 bbWeight=1 PerfScore 16.00
+G_M13613_IG04:        ; bbWeight=1, extend
             add     x0, fp, #0xD1FFAB1E
+            ; byrRegs -[x0]
             movi    v16.16b, #0
             stp     q16, q16, [x0]
             stp     q16, q16, [x0, #0x20]
             stp     q16, q16, [x0, #0x40]
-                        ;; size=44 bbWeight=1 PerfScore 9.00
-G_M13613_IG03:        ; bbWeight=1, nogc, extend
+                     ;; size=20 bbWeight=1 PerfScore 4.00
+G_M13613_IG05:        ; bbWeight=1, nogc, extend
             add     x0, fp, #0xD1FFAB1E
             ldp     q16, q17, [x0, #0xE0]
             stp     q16, q17, [fp, #0xE0]
@@ -58,7 +71,7 @@ G_M13613_IG03:        ; bbWeight=1, nogc, extend
             ldp     q16, q17, [x0, #0xD1FFAB1E]
             stp     q16, q17, [fp, #0xD1FFAB1E]
                        ;; size=28 bbWeight=1 PerfScore 12.50
-G_M13613_IG04:        ; bbWeight=1, extend
+G_M13613_IG06:        ; bbWeight=1, extend
             add     x0, fp, #224   // [V05 tmp3]
             add     x8, fp, #0xD1FFAB1E    // [V04 tmp2]
             movz    x1, #0xD1FFAB1E      // code for <unknown method>
@@ -67,7 +80,7 @@ G_M13613_IG04:        ; bbWeight=1, extend
             ldr     x1, [x1]
             blr     x1
                        ;; size=28 bbWeight=1 PerfScore 6.50
-G_M13613_IG05:        ; bbWeight=1, nogc, extend
+G_M13613_IG07:        ; bbWeight=1, nogc, extend
             add     x0, fp, #0xD1FFAB1E
             ldr     x1, [x0, #0x78]
             str     x1, [fp, #0x78]
@@ -78,7 +91,7 @@ G_M13613_IG05:        ; bbWeight=1, nogc, extend
             ldp     q16, q17, [x0, #0xC0]
             stp     q16, q17, [fp, #0xC0]
                        ;; size=36 bbWeight=1 PerfScore 16.50
-G_M13613_IG06:        ; bbWeight=1, nogc, extend
+G_M13613_IG08:        ; bbWeight=1, nogc, extend
             add     x0, fp, #0xD1FFAB1E
             ldr     x1, [x0, #0x18]
             str     x1, [fp, #0x18]
@@ -91,7 +104,7 @@ G_M13613_IG06:        ; bbWeight=1, nogc, extend
             ldr     x1, [x0, #0x70]
             str     x1, [fp, #0x70]
                        ;; size=44 bbWeight=1 PerfScore 20.50
-G_M13613_IG07:        ; bbWeight=1, extend
+G_M13613_IG09:        ; bbWeight=1, extend
             add     x0, fp, #120   // [V06 tmp4]
             add     x1, fp, #24    // [V07 tmp5]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
@@ -100,13 +113,13 @@ G_M13613_IG07:        ; bbWeight=1, extend
             ldr     x2, [x2]
             blr     x2
                        ;; size=28 bbWeight=1 PerfScore 6.50
-G_M13613_IG08:        ; bbWeight=1, epilog, nogc, extend
+G_M13613_IG10:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp]
             add     sp, sp, #0xD1FFAB1E
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 2.50
 
-; Total bytes of code 284, prolog size 60, PerfScore 86.50, instruction count 71, allocated bytes for code 284 (MethodHash=417fcad2) for method NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
+; Total bytes of code 312, prolog size 60, PerfScore 102.00, instruction count 78, allocated bytes for code 312 (MethodHash=417fcad2) for method NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -117,7 +130,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 71 (0x00047) Actual length = 284 (0x00011c)
+  Function Length   : 78 (0x0004e) Actual length = 312 (0x000138)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
  
libraries.pmi.osx.arm64.checked.mch
-44 (-23.91%) : 11769.dasm - System.ValueTuple2[System.__Canon,System.Nullable1[int]]:GetHashCode():int:this (FullOpts)
@@ -10,30 +10,30 @@
 ;
 ;  V00 this         [V00,T00] (  6,  5.50)   byref  ->  x19         this single-def
 ;* V01 TypeCtx      [V01    ] (  0,  0   )    long  ->  zero-ref    single-def
-;  V02 loc0         [V02    ] (  4,  2.50)     ref  ->  [fp+0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
-;  V03 loc1         [V03    ] (  5,  3.50)  struct ( 8) [fp+0x18]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+;  V02 loc0         [V02    ] (  4,  2.50)     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
+;* V03 loc1         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
-;  V06 tmp2         [V06,T04] (  3,  2   )   byref  ->   x0        
-;  V07 tmp3         [V07,T05] (  3,  2   )     int  ->   x0        
+;  V06 tmp2         [V06,T03] (  3,  2   )   byref  ->   x0        
+;  V07 tmp3         [V07,T04] (  3,  2   )     int  ->   x0        
 ;  V08 tmp4         [V08,T01] (  3,  5   )   byref  ->   x1         single-def "impAppendStmt"
 ;* V09 tmp5         [V09    ] (  0,  0   )     int  ->  zero-ref   
-;  V10 tmp6         [V10,T03] (  4,  2.50)   byref  ->   x2        
+;* V10 tmp6         [V10    ] (  0,  0   )   byref  ->  zero-ref    single-def
 ;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref   
-;  V12 tmp8         [V12,T06] (  3,  2   )     int  ->   x1        
-;  V13 tmp9         [V13,T07] (  3,  1.50)     int  ->   x1         "Inline return value spill temp"
+;* V12 tmp8         [V12    ] (  0,  0   )     int  ->  zero-ref   
+;  V13 tmp9         [V13,T05] (  3,  2   )     int  ->   x1         "Inline return value spill temp"
 ;* V14 tmp10        [V14    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;  V15 tmp11        [V15    ] (  5,  3.50)   ubyte  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03.hasValue (fldOffset=0x0)" P-DEP
-;  V16 tmp12        [V16    ] (  3,  2   )     int  ->  [fp+0x1C]  do-not-enreg[X] addr-exposed "field V03.value (fldOffset=0x4)" P-DEP
+;* V15 tmp11        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V16 tmp12        [V16    ] (  0,  0   )     int  ->  zero-ref    "field V03.value (fldOffset=0x4)" P-INDEP
 ;  V17 tmp13        [V17,T02] (  3,  3   )     ref  ->   x0         single-def "argument with side effect"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M34277_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
-            str     x19, [sp, #0x28]
+            stp     fp, lr, [sp, #-0x20]!
+            str     x19, [sp, #0x18]
             mov     fp, sp
-            str     xzr, [fp, #0x20]   // [V02 loc0]
+            str     xzr, [fp, #0x10] // [V02 loc0]
             mov     x19, x0
             ; byrRegs +[x19]
                        ;; size=20 bbWeight=1 PerfScore 4.00
@@ -41,7 +41,7 @@ G_M34277_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
             ldrsb   wzr, [x19]
             mov     x0, x19
             ; byrRegs +[x0]
-            ldr     x1, [fp, #0x20]   // [V02 loc0]
+            ldr     x1, [fp, #0x10]  // [V02 loc0]
             ; gcrRegs +[x1]
             cbnz    x1, G_M34277_IG04
                        ;; size=16 bbWeight=1 PerfScore 6.50
@@ -50,11 +50,11 @@ G_M34277_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
             ; byrRegs -[x0]
             ldr     x0, [x19]
             ; gcrRegs +[x0]
-            str     x0, [fp, #0x20]   // [V02 loc0]
-            add     x0, fp, #32    // [V02 loc0]
+            str     x0, [fp, #0x10]  // [V02 loc0]
+            add     x0, fp, #16    // [V02 loc0]
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
-            ldr     x1, [fp, #0x20]   // [V02 loc0]
+            ldr     x1, [fp, #0x10]  // [V02 loc0]
             ; gcrRegs +[x1]
             cbnz    x1, G_M34277_IG04
             mov     w0, wzr
@@ -76,48 +76,33 @@ G_M34277_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80001 {x0 x1
 G_M34277_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
             add     x1, x19, #8
             ; byrRegs +[x1]
-            str     xzr, [fp, #0x18]  // [V03 loc1]
-            mov     x2, x1
-            ; byrRegs +[x2]
-            ldrb    w3, [fp, #0x18]    // [V15 tmp11]
-            cbnz    w3, G_M34277_IG07
-                       ;; size=20 bbWeight=1 PerfScore 5.00
-G_M34277_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
-            ; byrRegs -[x2 x19]
-            ldr     x2, [x1]
-            str     x2, [fp, #0x18]    // [V03 loc1]
-            add     x2, fp, #24    // [V03 loc1]
-            ; byrRegs +[x2]
-            ldrb    w1, [fp, #0x18]    // [V15 tmp11]
+            ldrb    w2, [x1]
+            cbnz    w2, G_M34277_IG07
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M34277_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; byrRegs -[x1 x19]
+            mov     w1, wzr
+            b       G_M34277_IG08
+                       ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M34277_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+            ; byrRegs +[x1]
+            ldr     w1, [x1, #0x04]
             ; byrRegs -[x1]
-            cbnz    w1, G_M34277_IG07
-            mov     w1, wzr
-            b       G_M34277_IG09
-                       ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M34277_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref, isz
-            ldrb    w1, [x2]
-            cbnz    w1, G_M34277_IG08
-            mov     w1, wzr
-            b       G_M34277_IG09
-                       ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M34277_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
-            ldr     w1, [x2, #0x04]
                         ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M34277_IG09:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; byrRegs -[x2]
+G_M34277_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             ldr     x2, [x2]
             blr     x2
                        ;; size=20 bbWeight=1 PerfScore 5.50
-G_M34277_IG10:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x19, [sp, #0x28]
-            ldp     fp, lr, [sp], #0x30
+G_M34277_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x19, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 184, prolog size 16, PerfScore 44.75, instruction count 46, allocated bytes for code 184 (MethodHash=4c2b7a1a) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
+; Total bytes of code 140, prolog size 16, PerfScore 37.75, instruction count 35, allocated bytes for code 140 (MethodHash=4c2b7a1a) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -128,7 +113,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 46 (0x0002e) Actual length = 184 (0x0000b8)
+  Function Length   : 35 (0x00023) Actual length = 140 (0x00008c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -136,8 +121,8 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 05       save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    D0 03       save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+    83          save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
     E4          end
     E4          end
     E4          end
  
-44 (-17.74%) : 11773.dasm - System.ValueTuple2[System.__Canon,System.Nullable1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
@@ -11,22 +11,22 @@
 ;  V00 this         [V00,T00] (  6,  5.50)   byref  ->  x19         this single-def
 ;* V01 TypeCtx      [V01    ] (  0,  0   )    long  ->  zero-ref    single-def
 ;  V02 loc0         [V02    ] (  4,  2.50)     ref  ->  [fp+0x18]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
-;  V03 loc1         [V03    ] (  5,  3.50)  struct ( 8) [fp+0x10]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+;* V03 loc1         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
-;  V06 tmp2         [V06,T04] (  3,  2   )   byref  ->   x0        
-;  V07 tmp3         [V07,T05] (  3,  2   )     ref  ->  x20        
+;  V06 tmp2         [V06,T03] (  3,  2   )   byref  ->   x0        
+;  V07 tmp3         [V07,T04] (  3,  2   )     ref  ->  x20        
 ;  V08 tmp4         [V08,T01] (  3,  5   )   byref  ->   x0         single-def "impAppendStmt"
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V11 tmp7         [V11,T03] (  4,  2.50)   byref  ->   x1        
+;* V11 tmp7         [V11    ] (  0,  0   )   byref  ->  zero-ref    single-def
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref   
-;  V14 tmp10        [V14,T06] (  3,  2   )     ref  ->   x2        
-;  V15 tmp11        [V15,T07] (  3,  1.50)     ref  ->   x2         class-hnd "Inline return value spill temp" <System.String>
+;* V14 tmp10        [V14    ] (  0,  0   )     ref  ->  zero-ref   
+;  V15 tmp11        [V15,T05] (  3,  2   )     ref  ->   x2         class-hnd "Inline return value spill temp" <System.String>
 ;* V16 tmp12        [V16    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;  V17 tmp13        [V17    ] (  5,  3.50)   ubyte  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03.hasValue (fldOffset=0x0)" P-DEP
-;  V18 tmp14        [V18    ] (  3,  2   )     int  ->  [fp+0x14]  do-not-enreg[X] addr-exposed "field V03.value (fldOffset=0x4)" P-DEP
+;* V17 tmp13        [V17    ] (  0,  0   )   ubyte  ->  zero-ref    "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V18 tmp14        [V18    ] (  0,  0   )     int  ->  zero-ref    "field V03.value (fldOffset=0x4)" P-INDEP
 ;  V19 tmp15        [V19,T02] (  3,  3   )     ref  ->   x0         single-def "argument with side effect"
 ;
 ; Lcl frame size = 16
@@ -79,38 +79,21 @@ G_M39544_IG05:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
             ; gcrRegs -[x0]
             add     x0, x19, #8
             ; byrRegs +[x0]
-            str     xzr, [fp, #0x10]  // [V03 loc1]
-            mov     x1, x0
-            ; byrRegs +[x1]
-            ldrb    w2, [fp, #0x10]    // [V17 tmp13]
-            cbnz    w2, G_M39544_IG07
-                       ;; size=20 bbWeight=1 PerfScore 5.00
-G_M39544_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
-            ; byrRegs -[x1 x19]
-            ldr     x1, [x0]
-            str     x1, [fp, #0x10]    // [V03 loc1]
-            add     x1, fp, #16    // [V03 loc1]
-            ; byrRegs +[x1]
-            ldrb    w0, [fp, #0x10]    // [V17 tmp13]
-            ; byrRegs -[x0]
-            cbnz    w0, G_M39544_IG07
-            mov     x2, xzr
-            ; gcrRegs +[x2]
-            b       G_M39544_IG09
-                       ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M39544_IG07:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0002 {x1}, byref, isz
-            ; gcrRegs -[x2]
-            ldrb    w0, [x1]
-            cbnz    w0, G_M39544_IG08
+            ldrb    w1, [x0]
+            cbnz    w1, G_M39544_IG07
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M39544_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            ; byrRegs -[x0 x19]
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
-            b       G_M39544_IG09
-                       ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M39544_IG08:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0002 {x1}, byref
-            ldr     w0, [x1, #0x04]
+            b       G_M39544_IG08
+                       ;; size=16 bbWeight=0.50 PerfScore 1.25
+G_M39544_IG07:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref
+            ; byrRegs +[x0]
+            ldr     w0, [x0, #0x04]
+            ; byrRegs -[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Number:Int32ToDecStr(int):System.String
-            ; byrRegs -[x1]
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             ldr     x1, [x1]
@@ -119,7 +102,7 @@ G_M39544_IG08:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0002 {x
             mov     x2, x0
             ; gcrRegs +[x2]
                        ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M39544_IG09:        ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref
+G_M39544_IG08:        ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -136,13 +119,13 @@ G_M39544_IG09:        ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}
             blr     x4
             ; gcrRegs -[x2 x20]
                        ;; size=48 bbWeight=1 PerfScore 9.00
-G_M39544_IG10:        ; bbWeight=1, epilog, nogc, extend
+G_M39544_IG09:        ; bbWeight=1, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 3.00
 
-; Total bytes of code 248, prolog size 16, PerfScore 51.00, instruction count 62, allocated bytes for code 248 (MethodHash=50db6587) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
+; Total bytes of code 204, prolog size 16, PerfScore 44.00, instruction count 51, allocated bytes for code 204 (MethodHash=50db6587) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -153,7 +136,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 62 (0x0003e) Actual length = 248 (0x0000f8)
+  Function Length   : 51 (0x00033) Actual length = 204 (0x0000cc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-40 (-16.95%) : 6021.dasm - System.HashCode:Combine[System.__Canon,System.Nullable1[int]](System.__Canon,System.Nullable1[int]):int (FullOpts)
@@ -9,40 +9,40 @@
 ; Final local variable assignments
 ;
 ;* V00 TypeCtx      [V00    ] (  0,  0   )    long  ->  zero-ref    single-def
-;  V01 arg0         [V01    ] (  3,  3   )     ref  ->  [fp+0x30]  do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg1         [V02    ] (  3,  3   )  struct ( 8) [fp+0x28]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Nullable`1[int]>
+;  V01 arg0         [V01    ] (  3,  3   )     ref  ->  [fp+0x20]  do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>
+;  V02 arg1         [V02    ] (  3,  3   )  struct ( 8) [fp+0x18]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Nullable`1[int]>
 ;* V03 loc0         [V03    ] (  0,  0   )     int  ->  zero-ref   
 ;* V04 loc1         [V04    ] (  0,  0   )     int  ->  zero-ref   
-;  V05 loc2         [V05,T04] (  3,  3   )     int  ->   x1        
-;  V06 loc3         [V06    ] (  4,  2.50)     ref  ->  [fp+0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
-;  V07 loc4         [V07    ] (  5,  3.50)  struct ( 8) [fp+0x18]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+;  V05 loc2         [V05,T03] (  3,  3   )     int  ->   x1        
+;  V06 loc3         [V06    ] (  4,  2.50)     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
+;* V07 loc4         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V09 tmp1         [V09,T06] (  4,  2.50)   byref  ->   x0        
+;  V09 tmp1         [V09,T05] (  4,  2.50)   byref  ->   x0        
 ;  V10 tmp2         [V10,T07] (  3,  2   )     int  ->  x19        
-;  V11 tmp3         [V11,T02] (  5,  3   )   byref  ->   x0        
-;  V12 tmp4         [V12,T08] (  3,  2   )     int  ->   x1        
-;  V13 tmp5         [V13,T09] (  3,  1.50)     int  ->   x1         "Inline return value spill temp"
+;  V11 tmp3         [V11,T06] (  3,  2.50)   byref  ->   x0         single-def
+;* V12 tmp4         [V12    ] (  0,  0   )     int  ->  zero-ref   
+;  V13 tmp5         [V13,T08] (  3,  2   )     int  ->   x1         "Inline return value spill temp"
 ;* V14 tmp6         [V14    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V15 tmp7         [V15,T00] (  6, 12   )     int  ->   x1         "Inlining Arg"
-;  V16 tmp8         [V16    ] (  5,  3.50)   ubyte  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V07.hasValue (fldOffset=0x0)" P-DEP
-;  V17 tmp9         [V17    ] (  3,  2   )     int  ->  [fp+0x1C]  do-not-enreg[X] addr-exposed "field V07.value (fldOffset=0x4)" P-DEP
-;  V18 tmp10        [V18,T03] (  3,  3   )     ref  ->   x0         single-def "argument with side effect"
+;* V16 tmp8         [V16    ] (  0,  0   )   ubyte  ->  zero-ref    "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V17 tmp9         [V17    ] (  0,  0   )     int  ->  zero-ref    "field V07.value (fldOffset=0x4)" P-INDEP
+;  V18 tmp10        [V18,T02] (  3,  3   )     ref  ->   x0         single-def "argument with side effect"
 ;  V19 cse0         [V19,T01] (  4,  4   )     int  ->   x0         "CSE - aggressive"
-;  V20 cse1         [V20,T05] (  3,  3   )     int  ->   x3         "CSE - aggressive"
+;  V20 cse1         [V20,T04] (  3,  3   )     int  ->   x3         "CSE - aggressive"
 ;
-; Lcl frame size = 40
+; Lcl frame size = 24
 
 G_M60379_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x40]!
-            str     x19, [sp, #0x38]
+            stp     fp, lr, [sp, #-0x30]!
+            str     x19, [sp, #0x28]
             mov     fp, sp
-            str     xzr, [fp, #0x20]   // [V06 loc3]
-            stp     x2, x1, [fp, #0x28]    // [V02 arg1], [V01 arg0]
+            str     xzr, [fp, #0x10] // [V06 loc3]
+            stp     x2, x1, [fp, #0x18]    // [V02 arg1], [V01 arg0]
                        ;; size=20 bbWeight=1 PerfScore 4.50
 G_M60379_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            add     x0, fp, #48  // [V01 arg0]
+            add     x0, fp, #32  // [V01 arg0]
             ; byrRegs +[x0]
-            ldr     x1, [fp, #0x20]   // [V06 loc3]
+            ldr     x1, [fp, #0x10]  // [V06 loc3]
             ; gcrRegs +[x1]
             cbnz    x1, G_M60379_IG04
                        ;; size=12 bbWeight=1 PerfScore 3.50
@@ -51,11 +51,11 @@ G_M60379_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, b
             ldr     x0, [x0]
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
-            str     x0, [fp, #0x20]   // [V06 loc3]
-            add     x0, fp, #32    // [V06 loc3]
+            str     x0, [fp, #0x10]  // [V06 loc3]
+            add     x0, fp, #16    // [V06 loc3]
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
-            ldr     x1, [fp, #0x20]   // [V06 loc3]
+            ldr     x1, [fp, #0x10]  // [V06 loc3]
             ; gcrRegs +[x1]
             cbnz    x1, G_M60379_IG04
             mov     w19, wzr
@@ -74,33 +74,21 @@ G_M60379_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, b
             sxtw    w19, w0
                        ;; size=24 bbWeight=0.50 PerfScore 6.75
 G_M60379_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            str     xzr, [fp, #0x18] // [V07 loc4]
-            add     x0, fp, #40    // [V02 arg1]
+            add     x0, fp, #24  // [V02 arg1]
             ; byrRegs +[x0]
-            ldrb    w1, [fp, #0x18]   // [V16 tmp8]
-            cbnz    w1, G_M60379_IG07
-                       ;; size=16 bbWeight=1 PerfScore 4.50
-G_M60379_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
-            ldr     x0, [x0]
-            ; byrRegs -[x0]
-            str     x0, [fp, #0x18]    // [V07 loc4]
-            add     x0, fp, #24    // [V07 loc4]
-            ; byrRegs +[x0]
-            ldrb    w1, [fp, #0x18]    // [V16 tmp8]
-            cbnz    w1, G_M60379_IG07
-            mov     w1, wzr
-            b       G_M60379_IG09
-                       ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M60379_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
             ldrb    w1, [x0]
-            cbnz    w1, G_M60379_IG08
+            cbnz    w1, G_M60379_IG07
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M60379_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; byrRegs -[x0]
             mov     w1, wzr
-            b       G_M60379_IG09
-                       ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M60379_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+            b       G_M60379_IG08
+                       ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M60379_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+            ; byrRegs +[x0]
             ldr     w1, [x0, #0x04]
                        ;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M60379_IG09:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60379_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; byrRegs -[x0]
             movz    w0, #0xD1FFAB1E
             movk    w0, #0xD1FFAB1E LSL #16
@@ -122,13 +110,13 @@ G_M60379_IG09:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mul     w1, w1, w0
             eor     w0, w1, w1,  LSR #16
                        ;; size=76 bbWeight=1 PerfScore 21.00
-G_M60379_IG10:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x19, [sp, #0x38]
-            ldp     fp, lr, [sp], #0x40
+G_M60379_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x19, [sp, #0x28]
+            ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 236, prolog size 16, PerfScore 57.50, instruction count 59, allocated bytes for code 236 (MethodHash=6b5b1424) for method System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
+; Total bytes of code 196, prolog size 16, PerfScore 51.00, instruction count 49, allocated bytes for code 196 (MethodHash=6b5b1424) for method System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -139,7 +127,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 59 (0x0003b) Actual length = 236 (0x0000ec)
+  Function Length   : 49 (0x00031) Actual length = 196 (0x0000c4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -147,8 +135,8 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 07       save_reg X#0 Z#7 (0x07); str x19, [sp, #56]
-    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    D0 05       save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
+    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
     E4          end
  
+36 (+16.36%) : 1923.dasm - System.Array:SortSystem.__Canon (FullOpts)
@@ -8,24 +8,26 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  4.36)    long  ->  x19         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )     ref  ->   x1         class-hnd single-def <System.__Canon[]>
-;  V02 arg1         [V02,T02] (  4,  4   )     ref  ->  x20         class-hnd single-def <System.Comparison`1[System.__Canon]>
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )     ref  ->  x20         class-hnd single-def <System.__Canon[]>
+;  V02 arg1         [V02,T02] (  4,  4   )     ref  ->  x21         class-hnd single-def <System.Comparison`1[System.__Canon]>
 ;* V03 loc0         [V03    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[System.__Canon]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
 ;* V06 tmp2         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp3         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp4         [V08,T07] (  2,  4   )     int  ->  x22         "Inlining Arg"
-;  V09 tmp5         [V09,T06] (  2,  4   )   byref  ->  x21         single-def "Inlining Arg"
+;  V08 tmp4         [V08,T08] (  2,  4   )     int  ->  x20         "Inlining Arg"
+;  V09 tmp5         [V09,T07] (  2,  4   )   byref  ->  x22         single-def "Inlining Arg"
 ;* V10 tmp6         [V10    ] (  0,  0   )   byref  ->  zero-ref    "field V03._reference (fldOffset=0x0)" P-INDEP
 ;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0x8)" P-INDEP
-;  V12 tmp8         [V12,T09] (  2,  2   )   byref  ->  x21         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;  V13 tmp9         [V13,T10] (  2,  2   )     int  ->  x22         "field V05._length (fldOffset=0x8)" P-INDEP
-;  V14 tmp10        [V14,T08] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V15 rat0         [V15,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V16 rat1         [V16,T03] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V17 rat2         [V17,T04] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V12 tmp8         [V12,T10] (  2,  2   )   byref  ->  x22         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;  V13 tmp9         [V13,T11] (  2,  2   )     int  ->  x20         "field V05._length (fldOffset=0x8)" P-INDEP
+;  V14 tmp10        [V14,T09] (  2,  4   )    long  ->   x0         "argument with side effect"
+;* V15 rat0         [V15,T12] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V16 rat1         [V16,T03] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V17 rat2         [V17,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V18 rat3         [V18,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V19 rat4         [V19,T05] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
@@ -36,19 +38,32 @@ G_M37190_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             mov     fp, sp
             str     x0, [fp, #0x18]
             mov     x19, x0
-            mov     x20, x2
+            mov     x20, x1
             ; gcrRegs +[x20]
-                        ;; size=28 bbWeight=1 PerfScore 5.50
-G_M37190_IG02:        ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x1]
-            cbz     x1, G_M37190_IG08
-            cbz     x20, G_M37190_IG09
-            add     x21, x1, #16
-            ; byrRegs +[x21]
-            ldr     w22, [x1, #0x08]
+            mov     x21, x2
+            ; gcrRegs +[x21]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M37190_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M37190_IG10
+            cbz     x21, G_M37190_IG11
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M37190_IG04
+                       ;; size=20 bbWeight=1 PerfScore 9.00
+G_M37190_IG03:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M37190_IG04:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            add     x22, x20, #16
+            ; byrRegs +[x22]
+            ldr     w20, [x20, #0x08]
+            ; gcrRegs -[x20]
             mov     w0, #1
             movz    x1, #0xD1FFAB1E      // code for <unknown method>
-            ; gcrRegs -[x1]
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             ldr     x1, [x1]
@@ -56,43 +71,43 @@ G_M37190_IG02:        ; bbWeight=1, gcrefRegs=100002 {x1 x20}, byrefRegs=0000 {}
             ldr     x0, [x19, #0x38]
             ldr     x1, [x0, #0x08]
             cmp     x1, #24
-            ble     G_M37190_IG05
-                       ;; size=56 bbWeight=1 PerfScore 19.00
-G_M37190_IG03:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref, isz
+            ble     G_M37190_IG07
+                       ;; size=48 bbWeight=1 PerfScore 17.00
+G_M37190_IG05:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz
             ldr     x0, [x0, #0x18]
-            cbz     x0, G_M37190_IG05
+            cbz     x0, G_M37190_IG07
                      ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M37190_IG04:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
-            b       G_M37190_IG06
+G_M37190_IG06:        ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            b       G_M37190_IG08
                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M37190_IG05:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
+G_M37190_IG07:        ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                      ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M37190_IG06:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=200000 {x21}, byref
-            mov     x1, x21
+G_M37190_IG08:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            mov     x1, x22
             ; byrRegs +[x1]
-            mov     w2, w22
-            mov     x3, x20
+            mov     w2, w20
+            mov     x3, x21
             ; gcrRegs +[x3]
             movz    x4, #0xD1FFAB1E      // code for <unknown method>
             movk    x4, #0xD1FFAB1E LSL #16
             movk    x4, #1 LSL #32
             ldr     x4, [x4]
             blr     x4
-            ; gcrRegs -[x3 x20]
-            ; byrRegs -[x1 x21]
+            ; gcrRegs -[x3 x21]
+            ; byrRegs -[x1 x22]
                         ;; size=32 bbWeight=1 PerfScore 7.00
-G_M37190_IG07:        ; bbWeight=1, epilog, nogc, extend
+G_M37190_IG09:        ; bbWeight=1, epilog, nogc, extend
             ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
                        ;; size=16 bbWeight=1 PerfScore 4.00
-G_M37190_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M37190_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             mov     w0, #2
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -101,7 +116,7 @@ G_M37190_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             blr     x1
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M37190_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37190_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     w0, #29
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -111,7 +126,7 @@ G_M37190_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_unix #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 220, prolog size 20, PerfScore 40.42, instruction count 55, allocated bytes for code 220 (MethodHash=c2626eb9) for method System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
+; Total bytes of code 256, prolog size 20, PerfScore 48.52, instruction count 64, allocated bytes for code 256 (MethodHash=c2626eb9) for method System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -122,7 +137,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 55 (0x00037) Actual length = 220 (0x0000dc)
+  Function Length   : 64 (0x00040) Actual length = 256 (0x000100)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+48 (+33.33%) : 7473.dasm - System.MemoryExtensions:AsSpanSystem.__Canon:System.Span`1System.__Canon
@@ -8,64 +8,81 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  4.36)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )  struct (16) [fp+0x20]  do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ArraySegment`1[System.__Canon]>
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )  struct (16) [fp+0x20]  do-not-enreg[SFA] multireg-arg ld-addr-op single-def <System.ArraySegment`1[System.__Canon]>
 ;* V02 arg1         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.Index>
 ;* V03 loc0         [V03    ] (  0,  0   )     int  ->  zero-ref   
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V06 tmp2         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <System.Span`1[System.__Canon]>
-;  V08 tmp4         [V08,T03] (  5,  5   )     int  ->  x19         "Inline stloc first use temp"
-;  V09 tmp5         [V09,T07] (  2,  4   )     int  ->   x1         "Inlining Arg"
-;  V10 tmp6         [V10,T04] (  3,  3   )     int  ->   x3         single-def "field V02._value (fldOffset=0x0)" P-INDEP
-;  V11 tmp7         [V11,T10] (  2,  2   )   byref  ->   x0         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;  V12 tmp8         [V12,T11] (  2,  2   )     int  ->   x1         "field V07._length (fldOffset=0x8)" P-INDEP
-;  V13 tmp9         [V13,T09] (  3,  3   )  struct (16) [fp+0x10]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Span`1[System.__Canon]>
-;  V14 tmp10        [V14,T08] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V15 rat0         [V15,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V16 rat1         [V16,T02] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V17 rat2         [V17,T05] (  3,  4.48)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V08 tmp4         [V08,T04] (  5,  5   )     int  ->  x21         "Inline stloc first use temp"
+;  V09 tmp5         [V09,T08] (  2,  4   )     int  ->   x0         "Inlining Arg"
+;  V10 tmp6         [V10,T05] (  3,  3   )     int  ->  x20         single-def "field V02._value (fldOffset=0x0)" P-INDEP
+;  V11 tmp7         [V11,T11] (  2,  2   )   byref  ->   x0         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V12 tmp8         [V12,T12] (  2,  2   )     int  ->   x1         "field V07._length (fldOffset=0x8)" P-INDEP
+;  V13 tmp9         [V13,T10] (  3,  3   )  struct (16) [fp+0x10]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.Span`1[System.__Canon]>
+;  V14 tmp10        [V14,T09] (  2,  4   )    long  ->   x0         "argument with side effect"
+;* V15 rat0         [V15,T13] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V16 rat1         [V16,T02] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V17 rat2         [V17,T07] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V18 rat3         [V18,T03] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V19 rat4         [V19,T06] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
 G_M44554_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x40]!
-            str     x19, [sp, #0x38]
+            stp     fp, lr, [sp, #-0x50]!
+            stp     x19, x20, [sp, #0x38]
+            str     x21, [sp, #0x48]
             mov     fp, sp
             str     xzr, [fp, #0x10]   // [V13 tmp9]
             str     x0, [fp, #0x30]
             stp     x1, x2, [fp, #0x20]    // [V01 arg0], [V01 arg0+0x08]
-                        ;; size=24 bbWeight=1 PerfScore 5.50
+            mov     x19, x0
+            mov     w20, w3
+                       ;; size=36 bbWeight=1 PerfScore 7.50
 G_M44554_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ldr     w1, [fp, #0x2C]   // [V01 arg0+0x0c]
-            sxtw    w19, w3
-            add     w1, w3, w1
-            cmp     w19, #0
-            csinc   w19, w19, w1, ge
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M44554_IG05
-                       ;; size=36 bbWeight=1 PerfScore 11.50
-G_M44554_IG03:        ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x1, #0x18]
-            cbz     x2, G_M44554_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M44554_IG04:        ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            mov     x0, x2
-            b       G_M44554_IG06
-                       ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M44554_IG05:        ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M44554_IG04
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M44554_IG03:        ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-                       ;; size=16 bbWeight=0.36 PerfScore 0.90
-G_M44554_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M44554_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            ldr     w0, [fp, #0x2C]    // [V01 arg0+0x0c]
+            sxtw    w21, w20
+            add     w0, w20, w0
+            cmp     w21, #0
+            csinc   w21, w21, w0, ge
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M44554_IG07
+                       ;; size=36 bbWeight=1 PerfScore 11.50
+G_M44554_IG05:        ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M44554_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M44554_IG06:        ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            b       G_M44554_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M44554_IG07:        ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M44554_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ldp     x1, x2, [fp, #0x20] // [V01 arg0], [V01 arg0+0x08]
             ; gcrRegs +[x1]
-            mov     w3, w19
+            mov     w3, w21
             movz    x4, #0xD1FFAB1E      // code for System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon]
             movk    x4, #0xD1FFAB1E LSL #16
             movk    x4, #1 LSL #32
@@ -77,13 +94,14 @@ G_M44554_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ldr     x0, [fp, #0x10]    // [V13 tmp9]
             ldr     w1, [fp, #0x18]    // [V13 tmp9+0x08]
                        ;; size=40 bbWeight=1 PerfScore 14.00
-G_M44554_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x19, [sp, #0x38]
-            ldp     fp, lr, [sp], #0x40
+G_M44554_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x21, [sp, #0x48]
+            ldp     x19, x20, [sp, #0x38]
+            ldp     fp, lr, [sp], #0x50
             ret     lr
-                        ;; size=12 bbWeight=1 PerfScore 4.00
+                      ;; size=16 bbWeight=1 PerfScore 5.00
 
-; Total bytes of code 144, prolog size 20, PerfScore 40.06, instruction count 36, allocated bytes for code 144 (MethodHash=f5e951f5) for method System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Index):System.Span`1[System.__Canon] (FullOpts)
+; Total bytes of code 192, prolog size 24, PerfScore 50.52, instruction count 48, allocated bytes for code 192 (MethodHash=f5e951f5) for method System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Index):System.Span`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -94,7 +112,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
+  Function Length   : 48 (0x00030) Actual length = 192 (0x0000c0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -102,10 +120,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 07       save_reg X#0 Z#7 (0x07); str x19, [sp, #56]
-    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
-    E4          end
-    E4          end
+    D0 89       save_reg X#2 Z#9 (0x09); str x21, [sp, #72]
+    C8 07       save_regp X#0 Z#7 (0x07); stp x19, x20, [sp, #56]
+    89          save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
     E4          end
     E4          end
 
  
+44 (+36.67%) : 7463.dasm - System.MemoryExtensions:ReverseSystem.__Canon (FullOpts)
@@ -8,74 +8,91 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  3.68)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  4.28)    long  ->  x19         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op single-def <System.Span`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[System.__Canon]>
-;  V06 tmp4         [V06,T02] (  2,  1.50)   byref  ->  x20         single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-;  V07 tmp5         [V07,T01] (  3,  2.50)     int  ->  x19         single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;  V06 tmp4         [V06,T02] (  2,  1.50)   byref  ->  x21         single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+;  V07 tmp5         [V07,T01] (  3,  2.50)     int  ->  x20         single-def "field V01._length (fldOffset=0x8)" P-INDEP
 ;* V08 tmp6         [V08    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;* V09 tmp7         [V09    ] (  0,  0   )     int  ->  zero-ref    "field V05._length (fldOffset=0x8)" P-INDEP
-;  V10 tmp8         [V10,T06] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V11 rat0         [V11,T05] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V12 rat1         [V12,T03] (  3,  2.80)    long  ->   x1         "spilling expr"
-;  V13 rat2         [V13,T04] (  3,  2.24)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V10 tmp8         [V10,T07] (  2,  2   )    long  ->   x0         "argument with side effect"
+;* V11 rat0         [V11,T08] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat1         [V12,T03] (  2,  2   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V13 rat2         [V13,T06] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V14 rat3         [V14,T04] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V15 rat4         [V15,T05] (  3,  2.24)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M12375_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
-            stp     x19, x20, [sp, #0x20]
+            stp     x19, x20, [sp, #0x18]
+            str     x21, [sp, #0x28]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x20, x1
-            ; byrRegs +[x20]
-            mov     w19, w2
-                       ;; size=24 bbWeight=1 PerfScore 4.50
-G_M12375_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
-            cmp     w19, #1
-            ble     G_M12375_IG08
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x21, x1
+            ; byrRegs +[x21]
+            mov     w20, w2
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M12375_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+            cmp     w20, #1
+            ble     G_M12375_IG10
                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M12375_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M12375_IG06
-                       ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M12375_IG04:        ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref, isz
-            ldr     x2, [x1, #0x18]
-            cbz     x2, G_M12375_IG06
-                       ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M12375_IG05:        ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
-            mov     x0, x2
-            b       G_M12375_IG07
-                       ;; size=8 bbWeight=0.32 PerfScore 0.48
-G_M12375_IG06:        ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+G_M12375_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M12375_IG05
+                       ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M12375_IG04:        ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-                       ;; size=16 bbWeight=0.18 PerfScore 0.45
-G_M12375_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
-            mov     w2, w19
-            mov     x1, x20
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.10 PerfScore 0.30
+G_M12375_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M12375_IG08
+                       ;; size=16 bbWeight=0.50 PerfScore 3.75
+G_M12375_IG06:        ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M12375_IG08
+                       ;; size=8 bbWeight=0.40 PerfScore 1.60
+G_M12375_IG07:        ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+            b       G_M12375_IG09
+                       ;; size=4 bbWeight=0.32 PerfScore 0.32
+G_M12375_IG08:        ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.18 PerfScore 0.54
+G_M12375_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+            mov     w2, w20
+            mov     x1, x21
             ; byrRegs +[x1]
             movz    x3, #0xD1FFAB1E      // code for System.SpanHelpers:Reverse[System.__Canon](byref,ulong)
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #1 LSL #32
             ldr     x3, [x3]
             blr     x3
-            ; byrRegs -[x1 x20]
+            ; byrRegs -[x1 x21]
                        ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M12375_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
-            ldp     x19, x20, [sp, #0x20]
+G_M12375_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
+                      ;; size=16 bbWeight=1 PerfScore 5.00
 
-; Total bytes of code 120, prolog size 16, PerfScore 18.53, instruction count 30, allocated bytes for code 120 (MethodHash=d5a0cfa8) for method System.MemoryExtensions:Reverse[System.__Canon](System.Span`1[System.__Canon]) (FullOpts)
+; Total bytes of code 164, prolog size 20, PerfScore 25.76, instruction count 41, allocated bytes for code 164 (MethodHash=d5a0cfa8) for method System.MemoryExtensions:Reverse[System.__Canon](System.Span`1[System.__Canon]) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -86,7 +103,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 30 (0x0001e) Actual length = 120 (0x000078)
+  Function Length   : 41 (0x00029) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -94,10 +111,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
-    E4          end
-    E4          end
 
  
  
libraries_tests.run.osx.arm64.Release.mch
-36 (-14.75%) : 3483.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
@@ -9,13 +9,12 @@
 ; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
-;  V01 loc0         [V01,T02] (  7,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
+;  V00 arg0         [V00,T00] (  5,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
+;  V01 loc0         [V01,T01] (  5,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
+;  V03 tmp1         [V03,T02] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt return temp"
 ;* V05 tmp3         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;  V06 rat0         [V06,T00] (  6,  7   )     ref  ->   x0         class-hnd "replacement local" <System.Reflection.IReflectableType>
 ;
 ; Lcl frame size = 0
 
@@ -27,55 +26,34 @@ G_M46371_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
                        ;; size=16 bbWeight=1 PerfScore 3.00
 G_M46371_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M46371_IG10
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            cbnz    x0, G_M46371_IG06
-                       ;; size=12 bbWeight=1 PerfScore 2.50
-G_M46371_IG03:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M46371_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M46371_IG04:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            cmp     x1, x2
-            bne     G_M46371_IG11
-                       ;; size=24 bbWeight=1 PerfScore 6.00
-G_M46371_IG05:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x10]
-            ldp     fp, lr, [sp], #0x20
-            ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
-G_M46371_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            cmp     x1, x2
-            beq     G_M46371_IG03
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M46371_IG07:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
+            cbz     x19, G_M46371_IG06
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            cbnz    x0, G_M46371_IG04
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            cbz     x0, G_M46371_IG04
+            ldr     x1, [x0]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #1 LSL #32
+            cmp     x1, x2
+            bne     G_M46371_IG07
+                       ;; size=52 bbWeight=1 PerfScore 11.00
+G_M46371_IG03:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x19, x20, [sp, #0x10]
+            ldp     fp, lr, [sp], #0x20
+            ret     lr
+                       ;; size=12 bbWeight=1 PerfScore 3.00
+G_M46371_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
@@ -92,17 +70,17 @@ G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             mov     x0, x20
             ; gcrRegs +[x0]
                        ;; size=48 bbWeight=0 PerfScore 0.00
-G_M46371_IG09:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG05:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M46371_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0 x20]
             mov     w0, #0xD1FFAB1E
             movz    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_STRCNS
+            bl      CORINFO_HELP_NEWARR_1_ALIGN8
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // code for System.ArgumentNullException:Throw(System.String)
@@ -114,21 +92,21 @@ G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             ; gcr arg pop 0
             brk_unix #0
                        ;; size=40 bbWeight=0 PerfScore 0.00
-G_M46371_IG11:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M46371_IG07:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x0]
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
             movk    x11, #0xD1FFAB1E LSL #16
             movk    x11, #1 LSL #32
             ldr     x1, [x11]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M46371_IG12:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG08:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             br      x1
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 244, prolog size 16, PerfScore 18.50, instruction count 61, allocated bytes for code 244 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
+; Total bytes of code 208, prolog size 16, PerfScore 17.00, instruction count 52, allocated bytes for code 208 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -139,7 +117,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 61 (0x0003d) Actual length = 244 (0x0000f4)
+  Function Length   : 52 (0x00034) Actual length = 208 (0x0000d0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-24 (-4.41%) : 3488.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:GetListByName(ulong,int,ulong,int,int,int):System.Canon[]:this (Tier1)
@@ -9,24 +9,24 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] ( 10,  4.00)     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-;  V01 arg1         [V01,T09] (  3,  2   )    long  ->   x1         single-def
-;  V02 arg2         [V02,T07] (  4,  3   )     int  ->   x2         single-def
-;  V03 arg3         [V03,T04] (  4,  3.00)    long  ->  x21         single-def
-;  V04 arg4         [V04,T05] (  4,  3.00)     int  ->  x22         single-def
-;  V05 arg5         [V05,T06] (  3,  3.00)     int  ->  x23         single-def
-;  V06 arg6         [V06,T03] (  5,  3.00)     int  ->  x20         single-def
+;  V00 this         [V00,T00] ( 10,  4.00)     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V01 arg1         [V01,T08] (  3,  2   )    long  ->   x1         single-def
+;  V02 arg2         [V02,T06] (  4,  3   )     int  ->   x2         single-def
+;  V03 arg3         [V03,T03] (  4,  3.00)    long  ->  x21         single-def
+;  V04 arg4         [V04,T04] (  4,  3.00)     int  ->  x22         single-def
+;  V05 arg5         [V05,T05] (  3,  3.00)     int  ->  x23         single-def
+;  V06 arg6         [V06,T02] (  5,  3.00)     int  ->  x20         single-def
 ;  V07 loc0         [V07    ] ( 10,  4.01)  struct (24) [fp+0x18]  do-not-enreg[XSF] addr-exposed ld-addr-op <System.RuntimeType+RuntimeTypeCache+Filter>
-;  V08 loc1         [V08,T11] ( 10,  3.25)     ref  ->  x21         class-hnd <<unknown class>>
+;  V08 loc1         [V08,T11] (  9,  3.00)     ref  ->  x21         class-hnd <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T10] (  4,  3.50)    long  ->   x1         "spilling helperCall"
-;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V12 tmp3         [V12,T00] (  5,  7.50)     ref  ->   x0         class-hnd "spilling QMark2" <System.__Canon[]>
-;* V13 tmp4         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-;  V14 tmp5         [V14,T12] (  2,  2.00)    long  ->  x21         "field V13.m_pStringHeap (fldOffset=0x0)" P-INDEP
-;  V15 tmp6         [V15,T13] (  2,  2.00)     int  ->  x22         "field V13.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-;  V16 rat0         [V16,T08] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V17 rat1         [V17,T02] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp2         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
+;  V12 tmp3         [V12,T12] (  2,  2.00)    long  ->  x21         "field V11.m_pStringHeap (fldOffset=0x0)" P-INDEP
+;  V13 tmp4         [V13,T13] (  2,  2.00)     int  ->  x22         "field V11.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+;  V14 tmp5         [V14,T10] (  2,  4   )    long  ->   x0         "argument with side effect"
+;  V15 rat0         [V15,T07] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V16 rat1         [V16,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V17 rat2         [V17,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -45,7 +45,7 @@ G_M19047_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             mov     w20, w6
                        ;; size=44 bbWeight=1 PerfScore 8.00
 G_M19047_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbnz    w2, G_M19047_IG20
+            cbnz    w2, G_M19047_IG18
                      ;; size=4 bbWeight=1 PerfScore 1.00
 G_M19047_IG03:        ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             str     x21, [fp, #0x18]   // [V07 loc0]
@@ -74,15 +74,16 @@ G_M19047_IG05:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             ldr     x0, [x19]
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
-            ldr     x1, [x1, #0x28]
-            cbz     x1, G_M19047_IG08
+            ldr     x2, [x1, #0x28]
+            cbz     x2, G_M19047_IG08
                       ;; size=20 bbWeight=1 PerfScore 13.00
 G_M19047_IG06:        ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x2
             b       G_M19047_IG09
-                     ;; size=4 bbWeight=0.80 PerfScore 0.80
+                        ;; size=8 bbWeight=0.80 PerfScore 1.20
 G_M19047_IG07:        ; bbWeight=0.00, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
             cmp     w20, #6
-            bhi     G_M19047_IG19
+            bhi     G_M19047_IG17
             mov     w1, w20
             adr     x0, [@RWD00]
             ldr     w0, [x0, x1, LSL #2]
@@ -94,35 +95,22 @@ G_M19047_IG08:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=000
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            mov     x1, x0
-                       ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M19047_IG09:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x21
-            ; gcrRegs +[x0]
-            cbz     x0, G_M19047_IG12
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19047_IG10:        ; bbWeight=0.50, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            cmp     x2, x1
-            beq     G_M19047_IG12
-                       ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M19047_IG11:        ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x1
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
+                       ;; size=16 bbWeight=0.20 PerfScore 0.50
+G_M19047_IG09:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             mov     x1, x21
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1 x21] +[x0]
-                       ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M19047_IG12:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+                     ;; size=8 bbWeight=1 PerfScore 1.50
+G_M19047_IG10:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
             ldp     fp, lr, [sp], #0x60
             ret     lr
                        ;; size=20 bbWeight=1 PerfScore 6.00
-G_M19047_IG13:        ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M19047_IG11:        ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             add     x1, fp, #24    // [V07 loc0]
             mov     x0, x19
@@ -136,6 +124,34 @@ G_M19047_IG13:        ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=800
             ; gcrRegs +[x21]
             b       G_M19047_IG05
                        ;; size=36 bbWeight=0.00 PerfScore 0.01
+G_M19047_IG12:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x21]
+            add     x1, fp, #24    // [V07 loc0]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #1 LSL #32
+            ldr     x2, [x2]
+            blr     x2
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            b       G_M19047_IG05
+                       ;; size=36 bbWeight=0 PerfScore 0.00
+G_M19047_IG13:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x21]
+            add     x1, fp, #24    // [V07 loc0]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #1 LSL #32
+            ldr     x2, [x2]
+            blr     x2
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            b       G_M19047_IG05
+                       ;; size=36 bbWeight=0 PerfScore 0.00
 G_M19047_IG14:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x21]
             add     x1, fp, #24    // [V07 loc0]
@@ -155,7 +171,7 @@ G_M19047_IG15:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             add     x1, fp, #24    // [V07 loc0]
             mov     x0, x19
             ; gcrRegs +[x0]
-            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movz    x2, #0xD1FFAB1E      // code for System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeEventInfo[]:this
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             ldr     x2, [x2]
@@ -178,35 +194,7 @@ G_M19047_IG16:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs +[x21]
             b       G_M19047_IG05
                        ;; size=36 bbWeight=0 PerfScore 0.00
-G_M19047_IG17:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x21]
-            add     x1, fp, #24    // [V07 loc0]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            movz    x2, #0xD1FFAB1E      // code for System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeEventInfo[]:this
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            ldr     x2, [x2]
-            blr     x2
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            b       G_M19047_IG05
-                       ;; size=36 bbWeight=0 PerfScore 0.00
-G_M19047_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x21]
-            add     x1, fp, #24    // [V07 loc0]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            movz    x2, #0xD1FFAB1E      // code for <unknown method>
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            ldr     x2, [x2]
-            blr     x2
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            b       G_M19047_IG05
-                       ;; size=36 bbWeight=0 PerfScore 0.00
-G_M19047_IG19:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M19047_IG17:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -221,7 +209,7 @@ G_M19047_IG19:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             blr     x2
             b       G_M19047_IG05
                        ;; size=48 bbWeight=0 PerfScore 0.00
-G_M19047_IG20:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M19047_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x21]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -238,16 +226,16 @@ G_M19047_IG20:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs -[x0]
             b       G_M19047_IG03
                        ;; size=48 bbWeight=0 PerfScore 0.00
-RWD00     dd  G_M19047_IG13 - G_M19047_IG02
-           dd  G_M19047_IG15 - G_M19047_IG02
+RWD00    dd  G_M19047_IG11 - G_M19047_IG02
+           dd  G_M19047_IG13 - G_M19047_IG02
+           dd  G_M19047_IG12 - G_M19047_IG02
            dd  G_M19047_IG14 - G_M19047_IG02
-         dd  G_M19047_IG16 - G_M19047_IG02
-           dd  G_M19047_IG17 - G_M19047_IG02
+         dd  G_M19047_IG15 - G_M19047_IG02
            dd  G_M19047_IG04 - G_M19047_IG02
-         dd  G_M19047_IG18 - G_M19047_IG02
+         dd  G_M19047_IG16 - G_M19047_IG02
 
 
-; Total bytes of code 544, prolog size 24, PerfScore 45.67, instruction count 136, allocated bytes for code 544 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
+; Total bytes of code 520, prolog size 24, PerfScore 43.22, instruction count 130, allocated bytes for code 520 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -258,7 +246,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 136 (0x00088) Actual length = 544 (0x000220)
+  Function Length   : 130 (0x00082) Actual length = 520 (0x000208)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-4 (-3.33%) : 1062.dasm - Xunit.TestFrameworkOptions:GetValue[System.Nullable1[ubyte]](System.String):System.Nullable1[ubyte]:this (Tier0)
@@ -5,29 +5,28 @@
 ; partially interruptible
 ; Final local variable assignments
 ;
-;  V00 this         [V00    ] (  1,  1   )     ref  ->  [fp+0x38]  do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions>
-;  V01 arg1         [V01    ] (  1,  1   )     ref  ->  [fp+0x30]  do-not-enreg[] class-hnd <System.String>
-;  V02 loc0         [V02    ] (  1,  1   )     ref  ->  [fp+0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
-;  V03 loc1         [V03    ] (  1,  1   )  struct ( 8) [fp+0x20]  do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[ubyte]>
+;  V00 this         [V00    ] (  1,  1   )     ref  ->  [fp+0x28]  do-not-enreg[] this class-hnd <Xunit.TestFrameworkOptions>
+;  V01 arg1         [V01    ] (  1,  1   )     ref  ->  [fp+0x20]  do-not-enreg[] class-hnd <System.String>
+;  V02 loc0         [V02    ] (  1,  1   )     ref  ->  [fp+0x18]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <<unknown class>>
+;  V03 loc1         [V03    ] (  1,  1   )  struct ( 8) [fp+0x10]  do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[ubyte]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05    ] (  1,  1   )  struct ( 8) [fp+0x18]  do-not-enreg[XS] addr-exposed "pseudo return buffer" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 48
+; Lcl frame size = 32
 
 G_M29704_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x40]!
+            stp     fp, lr, [sp, #-0x30]!
             mov     fp, sp
-            str     xzr, [fp, #0x28]   // [V02 loc0]
-            str     xzr, [fp, #0x20]   // [V03 loc1]
-            str     x0, [fp, #0x38]    // [V00 this]
-            str     x1, [fp, #0x30]    // [V01 arg1]
+            str     xzr, [fp, #0x18] // [V02 loc0]
+            str     xzr, [fp, #0x10]   // [V03 loc1]
+            str     x0, [fp, #0x28]    // [V00 this]
+            str     x1, [fp, #0x20]    // [V01 arg1]
                        ;; size=24 bbWeight=1 PerfScore 5.50
 G_M29704_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [fp, #0x38]  // [V00 this]
+            ldr     x0, [fp, #0x28]  // [V00 this]
             ; gcrRegs +[x0]
             ldr     x0, [x0, #0x08]
-            add     x2, fp, #40   // [V02 loc0]
-            ldr     x1, [fp, #0x30]    // [V01 arg1]
+            add     x2, fp, #24  // [V02 loc0]
+            ldr     x1, [fp, #0x20]    // [V01 arg1]
             ; gcrRegs +[x1]
             movz    x3, #0xD1FFAB1E      // code for <unknown method>
             movk    x3, #0xD1FFAB1E LSL #16
@@ -37,30 +36,31 @@ G_M29704_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             blr     x3
             ; gcrRegs -[x0-x1]
             cbz     w0, G_M29704_IG04
-            add     x0, fp, #24 // [V05 tmp1]
-            ldr     x2, [fp, #0x28]    // [V02 loc0]
-            ; gcrRegs +[x2]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_UNBOX_NULLABLE
-            ; gcrRegs -[x2]
-            ldr     w0, [fp, #0x18]    // [V05 tmp1]
-                       ;; size=72 bbWeight=1 PerfScore 24.00
+            ldr     x1, [fp, #0x18]  // [V02 loc0]
+            ; gcrRegs +[x1]
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_UNBOX
+            ; gcrRegs -[x1]
+            ; byrRegs +[x0]
+            ldrh    w0, [x0]
+            ; byrRegs -[x0]
+                       ;; size=68 bbWeight=1 PerfScore 24.50
 G_M29704_IG03:        ; bbWeight=1, epilog, nogc, extend
-            ldp     fp, lr, [sp], #0x40
+            ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 G_M29704_IG04:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            strh    wzr, [fp, #0x20]  // [V03 loc1]
-            ldr     w0, [fp, #0x20]    // [V03 loc1]
+            strh    wzr, [fp, #0x10] // [V03 loc1]
+            ldr     w0, [fp, #0x10]    // [V03 loc1]
                        ;; size=8 bbWeight=1 PerfScore 3.00
 G_M29704_IG05:        ; bbWeight=1, epilog, nogc, extend
-            ldp     fp, lr, [sp], #0x40
+            ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 120, prolog size 16, PerfScore 36.50, instruction count 30, allocated bytes for code 120 (MethodHash=9a568bf7) for method Xunit.TestFrameworkOptions:GetValue[System.Nullable`1[ubyte]](System.String):System.Nullable`1[ubyte]:this (Tier0)
+; Total bytes of code 116, prolog size 16, PerfScore 37.00, instruction count 29, allocated bytes for code 116 (MethodHash=9a568bf7) for method Xunit.TestFrameworkOptions:GetValue[System.Nullable`1[ubyte]](System.String):System.Nullable`1[ubyte]:this (Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -71,7 +71,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 30 (0x0001e) Actual length = 120 (0x000078)
+  Function Length   : 29 (0x0001d) Actual length = 116 (0x000074)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -82,7 +82,7 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
 
  
+0 (0.00%) : 2316.dasm - Xunit.DelegatingXmlCreationSink:GetTestCollectionElement(Xunit.Abstractions.ITestCollection):System.Xml.Linq.XElement:this (Tier0)
@@ -74,9 +74,11 @@ G_M37032_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, #210
-            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+            bl      CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #2 LSL #32
             ldr     x0, [x0]
@@ -94,7 +96,7 @@ G_M37032_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             str     x0, [fp, #0x18]    // [V12 tmp7]
@@ -103,9 +105,11 @@ G_M37032_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, #210
-            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+            bl      CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #2 LSL #32
             ldr     x0, [x0]
@@ -128,7 +132,8 @@ G_M37032_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, #210
-            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+            bl      CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             ldr     x15, [fp, #0x18]   // [V12 tmp7]
             ; gcrRegs +[x15]
@@ -137,6 +142,7 @@ G_M37032_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x14, #2 LSL #32
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x15]
+            ; byrRegs -[x0]
             ldr     x0, [fp, #0x18]   // [V12 tmp7]
             ; gcrRegs +[x0]
             str     x0, [fp, #0x20]    // [V11 tmp6]
  
+0 (0.00%) : 6348.dasm - ComInterfaceGenerator.Unit.Tests.TargetSignatureTests+d__4:MoveNext():this (Tier0)
@@ -53,9 +53,11 @@ G_M11414_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, #175
-            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+            bl      CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             ldr     x0, [x0]
@@ -81,7 +83,7 @@ G_M11414_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             str     x0, [fp, #0x20]    // [V11 tmp6]
@@ -90,9 +92,11 @@ G_M11414_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, #175
-            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+            bl      CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             ldr     x0, [x0]
@@ -115,7 +119,8 @@ G_M11414_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, #175
-            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+            bl      CORINFO_HELP_GETSHARED_GCSTATIC_BASE
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             ldr     x15, [fp, #0x20]   // [V11 tmp6]
             ; gcrRegs +[x15]
@@ -124,6 +129,7 @@ G_M11414_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movk    x14, #1 LSL #32
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x15]
+            ; byrRegs -[x0]
             ldr     x0, [fp, #0x20]   // [V11 tmp6]
             ; gcrRegs +[x0]
             str     x0, [fp, #0x28]    // [V10 tmp5]
  
+48 (+33.33%) : 3485.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,88 +9,109 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] (  3,  3   )     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T02] (  5,  4.36)    long  ->   x1         single-def
-;  V02 arg1         [V02,T03] (  4,  4   )   byref  ->  x19         single-def
-;  V03 loc0         [V03,T01] (  7,  7   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T01] (  7,  5.72)    long  ->  x19         single-def
+;  V02 arg1         [V02,T03] (  4,  4   )   byref  ->  x20         single-def
+;  V03 loc0         [V03,T02] (  7,  7   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T00] (  4,  8   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T00] (  4,  8   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T07] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V11 rat2         [V11,T06] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V11 rat2         [V11,T07] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V12 rat3         [V12,T10] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V13 rat4         [V13,T05] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V14 rat5         [V14,T08] (  2,  3.20)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
-            ldr     x0, [x1, #0x38]
+            cbnz    x0, G_M58319_IG10
+            ldr     x0, [x19, #0x38]
             ; gcrRegs -[x0]
-            ldr     x2, [x0, #0x08]
-            cmp     x2, #24
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
             ble     G_M58319_IG05
                        ;; size=24 bbWeight=1 PerfScore 11.50
-G_M58319_IG03:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ldr     x0, [x0, #0x18]
             cbz     x0, G_M58319_IG05
                        ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M58319_IG04:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M58319_IG05:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                      ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M58319_IG06:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #32
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=1 PerfScore 11.00
+G_M58319_IG07:        ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x20]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M58319_IG08:        ; bbWeight=0.36, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M58319_IG09:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=1 PerfScore 7.00
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=1 PerfScore 3.50
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 144, prolog size 20, PerfScore 33.92, instruction count 36, allocated bytes for code 144 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 192, prolog size 20, PerfScore 45.20, instruction count 48, allocated bytes for code 192 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -101,7 +122,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
+  Function Length   : 48 (0x00030) Actual length = 192 (0x0000c0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -109,9 +130,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-20 (-20.83%) : 2966.dasm - Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:b_60(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
@@ -9,11 +9,9 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c>
-;  V01 arg1         [V01,T01] (  3,  3   )     ref  ->   x1         class-hnd single-def <System.Reflection.PropertyInfo>
+;  V01 arg1         [V01,T00] (  3,  3   )     ref  ->   x1         class-hnd single-def <System.Reflection.PropertyInfo>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T02] (  3,  4.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V04 tmp2         [V04,T03] (  3,  1.25)    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V05 tmp3         [V05,T00] (  5,  6.75)     ref  ->   x0         class-hnd "spilling QMark2" <<unknown class>>
+;  V03 tmp1         [V03,T01] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
@@ -21,7 +19,7 @@ G_M28645_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     fp, lr, [sp, #-0x10]!
             mov     fp, sp
                        ;; size=8 bbWeight=1 PerfScore 1.50
-G_M28645_IG02:        ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M28645_IG02:        ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x1]
             mov     x0, x1
             ; gcrRegs +[x0]
@@ -37,28 +35,19 @@ G_M28645_IG02:        ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
             blr     x3
             mov     x1, x0
             ; gcrRegs +[x1]
-            cbz     x0, G_M28645_IG05
-                       ;; size=48 bbWeight=1 PerfScore 9.50
-G_M28645_IG03:        ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #1 LSL #32
-            cmp     x2, x3
-            beq     G_M28645_IG05
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M28645_IG04:        ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            mov     x0, x3
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
-                       ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M28645_IG05:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+                      ;; size=60 bbWeight=1 PerfScore 11.00
+G_M28645_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 96, prolog size 8, PerfScore 14.69, instruction count 24, allocated bytes for code 96 (MethodHash=8b27901a) for method Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 14.50, instruction count 19, allocated bytes for code 76 (MethodHash=8b27901a) for method Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -69,7 +58,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 24 (0x00018) Actual length = 96 (0x000060)
+  Function Length   : 19 (0x00013) Actual length = 76 (0x00004c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-32 (-9.41%) : 3220.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
@@ -12,11 +12,9 @@
 ;  V01 arg1         [V01,T02] (  4,  3.50)   byref  ->  x21         single-def
 ;  V02 arg2         [V02,T01] (  5,  3.50)   byref  ->  x20         single-def
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T04] (  3,  1.50)   ubyte  ->   x0         "Inline return value spill temp"
+;  V04 tmp1         [V04,T03] (  3,  1.50)   ubyte  ->   x0         "Inline return value spill temp"
 ;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]>
-;  V06 tmp3         [V06    ] (  7,  2.88)     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
-;  V07 tmp4         [V07,T05] (  3,  1.25)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V08 tmp5         [V08,T03] (  3,  2.25)     ref  ->  x15         class-hnd "spilling QMark2" <<unknown class>>
+;  V06 tmp3         [V06    ] (  4,  2   )     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
 ;
 ; Lcl frame size = 8
 
@@ -66,7 +64,7 @@ G_M30064_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20
             blr     x4
             ; gcrRegs -[x1]
             ; byrRegs -[x3]
-            cbz     w0, G_M30064_IG10
+            cbz     w0, G_M30064_IG07
                       ;; size=104 bbWeight=1 PerfScore 22.00
 G_M30064_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
             ldr     x0, [x19, #0x20]
@@ -81,80 +79,61 @@ G_M30064_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {
             ldr     x3, [x11]
             blr     x3
             ; gcrRegs -[x0 x19]
-            cbz     w0, G_M30064_IG07
+            cbz     w0, G_M30064_IG04
             ldr     x1, [fp, #0x10]   // [V06 tmp3]
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFARRAY
+            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
             ; gcrRegs -[x1] +[x0]
-            cbz     x0, G_M30064_IG07
-            ldr     x15, [fp, #0x10]   // [V06 tmp3]
-            ; gcrRegs +[x15]
-            mov     x0, x15
-            cbz     x0, G_M30064_IG06
-                       ;; size=80 bbWeight=0.50 PerfScore 10.25
-G_M30064_IG04:        ; bbWeight=0.25, gcrefRegs=8000 {x15}, byrefRegs=300000 {x20 x21}, byref, isz
-            ; gcrRegs -[x0]
-            ldr     x0, [fp, #0x10]    // [V06 tmp3]
-            ; gcrRegs +[x0]
-            ldr     x0, [x0]
-            ; gcrRegs -[x0]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #1 LSL #32
-            cmp     x0, x1
-            beq     G_M30064_IG06
-                       ;; size=28 bbWeight=0.25 PerfScore 2.00
-G_M30064_IG05:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
-            ; gcrRegs -[x15]
-            mov     x0, x1
+            cbz     x0, G_M30064_IG04
             ldr     x1, [fp, #0x10]   // [V06 tmp3]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movz    x0, #0xD1FFAB1E
+            ; gcrRegs -[x0]
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             mov     x15, x0
             ; gcrRegs +[x15]
-                     ;; size=16 bbWeight=0.12 PerfScore 0.50
-G_M30064_IG06:        ; bbWeight=0.50, gcrefRegs=8000 {x15}, byrefRegs=300000 {x20 x21}, byref
-            ; gcrRegs -[x0]
             mov     x14, x20
             ; byrRegs +[x14]
             bl      CORINFO_HELP_CHECKED_ASSIGN_REF
-            ; gcrRegs -[x15]
+            ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
             mov     w0, #1
-            b       G_M30064_IG08
-                       ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M30064_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
+            b       G_M30064_IG05
+                       ;; size=108 bbWeight=0.50 PerfScore 12.50
+G_M30064_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
             str     xzr, [x20]
             mov     w0, wzr
                        ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30064_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M30064_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
             str     xzr, [fp, #0x10]  // [V06 tmp3]
-            cbz     w0, G_M30064_IG10
+            cbz     w0, G_M30064_IG07
             mov     w0, #1
                        ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M30064_IG09:        ; bbWeight=0.50, epilog, nogc, extend
+G_M30064_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M30064_IG10:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, gcvars, byref
+G_M30064_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, gcvars, byref
             str     xzr, [x21]
             str     xzr, [x20]
             mov     w0, wzr
                        ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M30064_IG11:        ; bbWeight=0.50, epilog, nogc, extend
+G_M30064_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
 
-; Total bytes of code 340, prolog size 20, PerfScore 50.50, instruction count 85, allocated bytes for code 340 (MethodHash=d8648a8f) for method Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
+; Total bytes of code 308, prolog size 20, PerfScore 48.75, instruction count 77, allocated bytes for code 308 (MethodHash=d8648a8f) for method Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -165,7 +144,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 85 (0x00055) Actual length = 340 (0x000154)
+  Function Length   : 77 (0x0004d) Actual length = 308 (0x000134)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-20 (-5.49%) : 3254.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
@@ -7,42 +7,40 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  4,  4   )     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
+;  V00 this         [V00,T00] (  7,  5.50)     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
 ;  V01 arg1         [V01,T02] (  4,  3   )   ubyte  ->  x20         single-def
-;  V02 loc0         [V02,T12] (  3,  2.50)     ref  ->  x23         class-hnd single-def <<unknown class>>
+;  V02 loc0         [V02,T11] (  3,  2.50)     ref  ->  x22         class-hnd single-def <<unknown class>>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V06 tmp3         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp4         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp5         [V08,T08] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V08 tmp5         [V08,T07] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;  V09 tmp6         [V09,T05] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V10 tmp7         [V10,T15] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V11 tmp8         [V11,T16] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V12 cse0         [V12,T07] (  5,  3.50)     ref  ->  x22         "CSE - aggressive"
-;  V13 cse1         [V13,T06] (  8,  3.80)    long  ->  x21         "CSE - aggressive"
-;  V14 rat0         [V14,T03] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V15 rat1         [V15,T04] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V16 rat2         [V16,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V17 rat3         [V17,T09] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V18 rat4         [V18,T13] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V19 rat5         [V19,T10] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V20 rat6         [V20,T14] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V21 rat7         [V21,T11] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V10 tmp7         [V10,T14] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V11 tmp8         [V11,T15] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V12 cse0         [V12,T06] (  8,  3.80)    long  ->  x21         "CSE - aggressive"
+;  V13 rat0         [V13,T03] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V14 rat1         [V14,T04] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V15 rat2         [V15,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V16 rat3         [V16,T08] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V17 rat4         [V17,T12] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V18 rat5         [V18,T09] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat6         [V19,T13] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V20 rat7         [V20,T10] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M18513_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x18]
-            stp     x21, x22, [sp, #0x28]
-            str     x23, [sp, #0x38]
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
+            str     x0, [fp, #0x18]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     w20, w1
-                      ;; size=32 bbWeight=1 PerfScore 6.50
+                      ;; size=28 bbWeight=1 PerfScore 5.50
 G_M18513_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x21, [x19]
             mov     x0, x21
@@ -59,56 +57,53 @@ G_M18513_IG04:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.20 PerfScore 0.50
 G_M18513_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x19, #0x08]
-            ; gcrRegs +[x22]
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            mov     x23, x0
-            ; gcrRegs +[x23]
-            cbz     x23, G_M18513_IG11
-                       ;; size=20 bbWeight=1 PerfScore 6.00
-G_M18513_IG06:        ; bbWeight=0.50, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x22]
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            cbz     x22, G_M18513_IG11
+                       ;; size=16 bbWeight=1 PerfScore 5.50
+G_M18513_IG06:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x11, [x0, #0x30]
             cbz     x11, G_M18513_IG08
                        ;; size=16 bbWeight=0.50 PerfScore 5.00
-G_M18513_IG07:        ; bbWeight=0.40, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG07:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             b       G_M18513_IG09
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG08:        ; bbWeight=0.10, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG08:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0.10 PerfScore 0.35
-G_M18513_IG09:        ; bbWeight=0.50, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG09:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             uxtb    w1, w20
-            mov     x0, x23
+            mov     x0, x22
             ; gcrRegs +[x0]
             ldr     x2, [x11]
                        ;; size=12 bbWeight=0.50 PerfScore 2.00
 G_M18513_IG10:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[x0 x23] +[x22]
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[x0 x22]
             tst     w20, #255
             beq     G_M18513_IG16
             ldr     x0, [x21, #0x38]
@@ -116,79 +111,77 @@ G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480
             ldr     x0, [x0, #0x28]
             cbz     x0, G_M18513_IG13
                        ;; size=24 bbWeight=0.50 PerfScore 5.75
-G_M18513_IG12:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG12:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M18513_IG14
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG13:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG13:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M18513_IG14:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            mov     x1, x22
+G_M18513_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG16
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG16
             movn    w0, #0
             ; gcrRegs -[x0]
-                      ;; size=40 bbWeight=0.50 PerfScore 3.50
+                       ;; size=40 bbWeight=0.50 PerfScore 6.00
 G_M18513_IG15:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M18513_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+                     ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M18513_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x0, [x0, #0x20]
             cbz     x0, G_M18513_IG18
                        ;; size=16 bbWeight=0.50 PerfScore 5.00
-G_M18513_IG17:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG17:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M18513_IG19
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG18:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG18:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M18513_IG19:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x1, x22
+G_M18513_IG19:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             ldr     x2, [x2]
-                     ;; size=20 bbWeight=0.50 PerfScore 2.50
+                       ;; size=20 bbWeight=0.50 PerfScore 3.75
 G_M18513_IG20:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0.50 PerfScore 3.00
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 364, prolog size 32, PerfScore 62.60, instruction count 91, allocated bytes for code 364 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
+; Total bytes of code 344, prolog size 28, PerfScore 61.85, instruction count 86, allocated bytes for code 344 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -199,7 +192,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 91 (0x0005b) Actual length = 364 (0x00016c)
+  Function Length   : 86 (0x00056) Actual length = 344 (0x000158)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
...
  
+32 (+23.53%) : 1179.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTrackerSystem.__Canon:Xunit.Sdk.CollectionTracker`1System.__Canon
@@ -7,83 +7,97 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  3.60)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T01] (  7,  4.20)    long  ->  x20         single-def
 ;  V01 arg0         [V01,T00] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  4,  2   )     ref  ->   x1        
-;  V04 tmp2         [V04,T06] (  2,  2   )    long  ->   x1         "spilling helperCall"
-;  V05 tmp3         [V05,T05] (  2,  2   )     ref  ->   x1         class-hnd "spilling QMark2" <Xunit.Sdk.CollectionTracker`1[System.__Canon]>
+;  V03 tmp1         [V03,T04] (  4,  2   )     ref  ->   x0        
+;  V04 tmp2         [V04,T05] (  3,  2   )    long  ->   x2         "spilling helperCall"
+;  V05 tmp3         [V05,T07] (  2,  2   )     ref  ->   x0         class-hnd "spilling QMark2" <Xunit.Sdk.CollectionTracker`1[System.__Canon]>
 ;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V07 tmp5         [V07,T07] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V08 cse0         [V08,T08] (  3,  1.50)    long  ->   x0         "CSE - moderate"
-;  V09 rat0         [V09,T04] (  3,  2   )    long  ->   x2         "runtime lookup"
-;  V10 rat1         [V10,T02] (  3,  2.80)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V07 tmp5         [V07,T08] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V08 rat0         [V08,T02] (  3,  2.80)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V09 rat1         [V09,T06] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V10 rat2         [V10,T03] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M4963_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x20]!
-            str     x19, [sp, #0x18]
+            stp     fp, lr, [sp, #-0x30]!
+            stp     x19, x20, [sp, #0x20]
             mov     fp, sp
-            str     x0, [fp, #0x10]
+            str     x0, [fp, #0x18]
+            mov     x20, x0
             mov     x19, x1
             ; gcrRegs +[x19]
-                     ;; size=20 bbWeight=1 PerfScore 4.00
+                      ;; size=24 bbWeight=1 PerfScore 4.50
 G_M4963_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M4963_IG08
+            cbz     x19, G_M4963_IG11
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M4963_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x10]
+            ldr     x0, [x20, #0x38]
+            ldr     x2, [x0, #0x10]
             cbz     x2, G_M4963_IG05
                        ;; size=12 bbWeight=0.50 PerfScore 3.50
 G_M4963_IG04:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M4963_IG06
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
 G_M4963_IG05:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            mov     x0, x20
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
             mov     x2, x0
-                       ;; size=20 bbWeight=0.10 PerfScore 0.30
+                       ;; size=24 bbWeight=0.10 PerfScore 0.35
 G_M4963_IG06:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x2
-            mov     x1, x0
-            ldr     x2, [x19]
-            cmp     x2, x1
-            csel    x1, x19, xzr, eq
-            ; gcrRegs +[x1]
-            cbnz    x1, G_M4963_IG09
+            ldr     x0, [x19]
+            cmp     x0, x2
+            csel    x0, x19, xzr, eq
+            ; gcrRegs +[x0]
+            cbnz    x0, G_M4963_IG12
+            ldr     x0, [x20, #0x38]
+            ; gcrRegs -[x0]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M4963_IG08
+                       ;; size=28 bbWeight=0.50 PerfScore 6.00
+G_M4963_IG07:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            b       G_M4963_IG09
+                       ;; size=4 bbWeight=0.40 PerfScore 0.40
+G_M4963_IG08:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            mov     x0, x20
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=20 bbWeight=0.10 PerfScore 0.30
+G_M4963_IG09:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x1, x19
+            ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for Xunit.Sdk.CollectionTracker`1[System.__Canon]:Wrap(System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon]
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             ldr     x2, [x2]
-                     ;; size=44 bbWeight=0.50 PerfScore 5.50
-G_M4963_IG07:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x19, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x20
+                      ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M4963_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x30
             br      x2
             ; gcr arg pop 0
-                      ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M4963_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                        ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M4963_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x1 x19]
-            mov     x1, xzr
-            ; gcrRegs +[x1]
-                       ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M4963_IG09:        ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
-            mov     x0, x1
+            mov     x0, xzr
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M4963_IG10:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x19, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x20
+G_M4963_IG12:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x30
             ret     lr
-                        ;; size=12 bbWeight=0.50 PerfScore 2.00
+                       ;; size=12 bbWeight=0.50 PerfScore 1.50
 
-; Total bytes of code 136, prolog size 20, PerfScore 19.20, instruction count 34, allocated bytes for code 136 (MethodHash=027eec9c) for method Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
+; Total bytes of code 168, prolog size 24, PerfScore 22.20, instruction count 42, allocated bytes for code 168 (MethodHash=027eec9c) for method Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -94,7 +108,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 34 (0x00022) Actual length = 136 (0x000088)
+  Function Length   : 42 (0x0002a) Actual length = 168 (0x0000a8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,8 +119,8 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 03       save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
-    83          save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
     E4          end
  
+44 (+33.33%) : 5882.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:CollectSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValueProvider1[System.Collections.Immutable.ImmutableArray1[System.__Canon]] (FullOpts)
@@ -8,55 +8,58 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.20)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T01] (  3,  6   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.BatchNode`1[System.__Canon]>
+;  V03 tmp1         [V03,T01] (  3,  6   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.BatchNode`1[System.__Canon]>
 ;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
 ;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp5         [V07    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V08 tmp6         [V08,T04] (  2,  2   )     ref  ->  x19         single-def "field V01.Node (fldOffset=0x0)" P-INDEP
-;  V09 tmp7         [V09,T05] (  2,  2   )   ubyte  ->  x20         single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-;  V10 tmp8         [V10,T06] (  2,  2   )     ref  ->   x0         single-def "field V05.Node (fldOffset=0x0)" P-INDEP
-;  V11 tmp9         [V11,T07] (  2,  2   )   ubyte  ->   x1         "field V05.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-;  V12 rat0         [V12,T03] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V13 rat1         [V13,T02] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V08 tmp6         [V08,T06] (  2,  2   )     ref  ->  x20         single-def "field V01.Node (fldOffset=0x0)" P-INDEP
+;  V09 tmp7         [V09,T07] (  2,  2   )   ubyte  ->  x21         single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+;  V10 tmp8         [V10,T08] (  2,  2   )     ref  ->   x0         single-def "field V05.Node (fldOffset=0x0)" P-INDEP
+;  V11 tmp9         [V11,T09] (  2,  2   )   ubyte  ->   x1         "field V05.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+;  V12 rat0         [V12,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V13 rat1         [V13,T02] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V14 rat2         [V14,T10] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V15 rat3         [V15,T03] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V16 rat4         [V16,T04] (  2,  3.20)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M15345_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
-            mov     x19, x1
-            ; gcrRegs +[x19]
-            mov     w20, w2
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M15345_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x0, #0x38]
-            ldr     x1, [x1, #0x10]
-            cbz     x1, G_M15345_IG04
+            str     x0, [fp, #0x18]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     w21, w2
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M15345_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M15345_IG04
                       ;; size=12 bbWeight=1 PerfScore 7.00
-G_M15345_IG03:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M15345_IG03:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             b       G_M15345_IG05
                        ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M15345_IG04:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M15345_IG04:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x1, x0
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M15345_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x0, x1
-            bl      CORINFO_HELP_NEWSFAST
+G_M15345_IG05:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            mov     x1, x19
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            mov     x1, x20
             ; gcrRegs +[x1]
             mov     x2, xzr
             mov     x3, xzr
@@ -65,19 +68,36 @@ G_M15345_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             movk    x4, #1 LSL #32
             ldr     x4, [x4]
             blr     x4
-            ; gcrRegs -[x0-x1 x19]
-            mov     x0, x21
+            ; gcrRegs -[x0-x1 x20]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M15345_IG07
+                       ;; size=56 bbWeight=1 PerfScore 16.00
+G_M15345_IG06:        ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M15345_IG08
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M15345_IG07:        ; bbWeight=0.36, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M15345_IG08:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x22
             ; gcrRegs +[x0]
-            uxtb    w1, w20
-                       ;; size=52 bbWeight=1 PerfScore 10.00
-G_M15345_IG06:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            uxtb    w1, w21
+                       ;; size=8 bbWeight=1 PerfScore 1.00
+G_M15345_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 28.90, instruction count 33, allocated bytes for code 132 (MethodHash=59b2c40e) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
+; Total bytes of code 176, prolog size 20, PerfScore 39.68, instruction count 44, allocated bytes for code 176 (MethodHash=59b2c40e) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -88,7 +108,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 44 (0x0002c) Actual length = 176 (0x0000b0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,9 +116,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+44 (+37.93%) : 4724.dasm - System.Linq.ImmutableArrayExtensions:SelectSystem.Canon,System.Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,70 +8,87 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.36)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-;  V02 arg1         [V02,T02] (  3,  3   )     ref  ->  x19         class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+;  V02 arg1         [V02,T03] (  3,  3   )     ref  ->  x20         class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V06 tmp3         [V06,T03] (  3,  3   )     ref  ->  x20         single-def "field V01.array (fldOffset=0x0)" P-INDEP
-;  V07 tmp4         [V07,T06] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V08 rat0         [V08,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V09 rat1         [V09,T01] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V10 rat2         [V10,T04] (  3,  4.48)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  x21         single-def "field V01.array (fldOffset=0x0)" P-INDEP
+;  V07 tmp4         [V07,T07] (  2,  4   )    long  ->   x0         "argument with side effect"
+;* V08 rat0         [V08,T08] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V09 rat1         [V09,T01] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V10 rat2         [V10,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V11 rat3         [V11,T02] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V12 rat4         [V12,T05] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M61273_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
-            stp     x19, x20, [sp, #0x20]
+            stp     x19, x20, [sp, #0x18]
+            str     x21, [sp, #0x28]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x20, x1
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x21, x1
+            ; gcrRegs +[x21]
+            mov     x20, x2
             ; gcrRegs +[x20]
-            mov     x19, x2
-            ; gcrRegs +[x19]
-                       ;; size=24 bbWeight=1 PerfScore 4.50
-G_M61273_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     wzr, [x20, #0x08]
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x10]
-            cmp     x2, #32
-            ble     G_M61273_IG05
-                       ;; size=20 bbWeight=1 PerfScore 10.50
-G_M61273_IG03:        ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x1, #0x20]
-            cbz     x2, G_M61273_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M61273_IG04:        ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            mov     x0, x2
-            b       G_M61273_IG06
-                       ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M61273_IG05:        ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+                      ;; size=32 bbWeight=1 PerfScore 6.00
+G_M61273_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M61273_IG04
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M61273_IG03:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-                       ;; size=16 bbWeight=0.36 PerfScore 0.90
-G_M61273_IG06:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            mov     x1, x20
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M61273_IG04:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     wzr, [x21, #0x08]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x10]
+            cmp     x1, #32
+            ble     G_M61273_IG07
+                       ;; size=20 bbWeight=1 PerfScore 10.50
+G_M61273_IG05:        ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x20]
+            cbz     x0, G_M61273_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M61273_IG06:        ; bbWeight=0.64, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            b       G_M61273_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M61273_IG07:        ; bbWeight=0.36, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M61273_IG08:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x1, x21
             ; gcrRegs +[x1]
-            mov     x2, x19
+            mov     x2, x20
             ; gcrRegs +[x2]
             movz    x3, #0xD1FFAB1E      // code for <unknown method>
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #1 LSL #32
             ldr     x3, [x3]
             blr     x3
-            ; gcrRegs -[x1-x2 x19-x20] +[x0]
+            ; gcrRegs -[x1-x2 x20-x21] +[x0]
                      ;; size=28 bbWeight=1 PerfScore 6.50
-G_M61273_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x20]
+G_M61273_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
+                      ;; size=16 bbWeight=1 PerfScore 5.00
 
-; Total bytes of code 116, prolog size 16, PerfScore 29.56, instruction count 29, allocated bytes for code 116 (MethodHash=f31810a6) for method System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 160, prolog size 20, PerfScore 40.52, instruction count 40, allocated bytes for code 160 (MethodHash=f31810a6) for method System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -82,7 +99,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 29 (0x0001d) Actual length = 116 (0x000074)
+  Function Length   : 40 (0x00028) Actual length = 160 (0x0000a0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -90,10 +107,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
-    E4          end
-    E4          end
 
  
  
realworld.run.osx.arm64.checked.mch
-24 (-4.51%) : 86.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:GetListByName(ulong,int,ulong,int,int,int):System.Canon[]:this (FullOpts)
@@ -9,23 +9,23 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 10,  6.50)     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-;  V01 arg1         [V01,T09] (  3,  2.50)    long  ->   x1         single-def
-;  V02 arg2         [V02,T05] (  4,  3.50)     int  ->   x2         single-def
-;  V03 arg3         [V03,T06] (  4,  3.50)    long  ->  x21         single-def
-;  V04 arg4         [V04,T07] (  4,  3.50)     int  ->  x22         single-def
-;  V05 arg5         [V05,T08] (  3,  3   )     int  ->  x23         single-def
-;  V06 arg6         [V06,T02] (  4,  4   )     int  ->  x20         single-def
+;  V01 arg1         [V01,T08] (  3,  2.50)    long  ->   x1         single-def
+;  V02 arg2         [V02,T04] (  4,  3.50)     int  ->   x2         single-def
+;  V03 arg3         [V03,T05] (  4,  3.50)    long  ->  x21         single-def
+;  V04 arg4         [V04,T06] (  4,  3.50)     int  ->  x22         single-def
+;  V05 arg5         [V05,T07] (  3,  3   )     int  ->  x23         single-def
+;  V06 arg6         [V06,T01] (  4,  4   )     int  ->  x20         single-def
 ;  V07 loc0         [V07    ] ( 10,  6.50)  struct (24) [fp+0x18]  do-not-enreg[XSF] addr-exposed ld-addr-op <System.RuntimeType+RuntimeTypeCache+Filter>
-;  V08 loc1         [V08,T03] ( 10,  5.62)     ref  ->  x21         class-hnd <<unknown class>>
+;  V08 loc1         [V08,T03] (  9,  5.50)     ref  ->  x21         class-hnd <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T11] (  4,  2.75)    long  ->   x1         "spilling helperCall"
-;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V12 tmp3         [V12,T01] (  5,  6.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.__Canon[]>
-;* V13 tmp4         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-;  V14 tmp5         [V14,T12] (  2,  2   )    long  ->  x21         "field V13.m_pStringHeap (fldOffset=0x0)" P-INDEP
-;  V15 tmp6         [V15,T13] (  2,  2   )     int  ->  x22         "field V13.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-;  V16 rat0         [V16,T10] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V17 rat1         [V17,T04] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp2         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
+;  V12 tmp3         [V12,T12] (  2,  2   )    long  ->  x21         "field V11.m_pStringHeap (fldOffset=0x0)" P-INDEP
+;  V13 tmp4         [V13,T13] (  2,  2   )     int  ->  x22         "field V11.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+;  V14 tmp5         [V14,T11] (  2,  4   )    long  ->   x0         "argument with side effect"
+;  V15 rat0         [V15,T09] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V16 rat1         [V16,T10] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V17 rat2         [V17,T02] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -192,38 +192,26 @@ G_M19047_IG13:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             ldr     x0, [x19]
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M19047_IG15
+            ldr     x2, [x1, #0x18]
+            cbz     x2, G_M19047_IG15
                       ;; size=20 bbWeight=1 PerfScore 13.00
 G_M19047_IG14:        ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x2
             b       G_M19047_IG16
-                     ;; size=4 bbWeight=0.80 PerfScore 0.80
+                        ;; size=8 bbWeight=0.80 PerfScore 1.20
 G_M19047_IG15:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            mov     x1, x0
-                       ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x21
-            ; gcrRegs +[x0]
-            cbz     x0, G_M19047_IG19
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19047_IG17:        ; bbWeight=0.25, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            cmp     x2, x1
-            beq     G_M19047_IG19
-                       ;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M19047_IG18:        ; bbWeight=0.12, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x1
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
+                       ;; size=16 bbWeight=0.20 PerfScore 0.50
+G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             mov     x1, x21
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1 x21] +[x0]
-                       ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M19047_IG19:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+                     ;; size=8 bbWeight=1 PerfScore 1.50
+G_M19047_IG17:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
@@ -239,7 +227,7 @@ RWD00   dd  G_M19047_IG05 - G_M19047_IG02
            dd  G_M19047_IG10 - G_M19047_IG02
 
 
-; Total bytes of code 532, prolog size 24, PerfScore 81.02, instruction count 133, allocated bytes for code 532 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
+; Total bytes of code 508, prolog size 24, PerfScore 79.95, instruction count 127, allocated bytes for code 508 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -250,7 +238,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 133 (0x00085) Actual length = 532 (0x000214)
+  Function Length   : 127 (0x0007f) Actual length = 508 (0x0001fc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-20 (-3.70%) : 371.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object
@@ -10,23 +10,21 @@
 ;
 ;  V00 arg0         [V00,T00] (  9,  6   )     ref  ->  x19         class-hnd single-def <System.RuntimeType>
 ;  V01 arg1         [V01,T01] (  8,  5   )     int  ->  x20         single-def
-;* V02 loc0         [V02,T12] (  0,  0   )   ubyte  ->  zero-ref   
-;  V03 loc1         [V03,T06] (  3,  2   )   ubyte  ->  x21        
+;* V02 loc0         [V02,T11] (  0,  0   )   ubyte  ->  zero-ref   
+;  V03 loc1         [V03,T04] (  3,  2   )   ubyte  ->  x21        
 ;* V04 loc2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Object[]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T05] (  3,  2.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T13] (  3,  1.25)    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T03] (  5,  3.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.Object[]>
-;  V09 tmp4         [V09,T07] (  3,  1.50)     ref  ->   x0        
-;  V10 tmp5         [V10,T08] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-;  V11 tmp6         [V11,T04] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V12 tmp7         [V12,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
-;* V13 tmp8         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
-;* V14 tmp9         [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V15 tmp10        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V16 tmp11        [V16,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
-;  V17 cse0         [V17,T10] (  3,  1.50)    long  ->   x0         "CSE - moderate"
-;  V18 cse1         [V18,T09] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V06 tmp1         [V06,T06] (  3,  1.50)     ref  ->   x0        
+;  V07 tmp2         [V07,T07] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+;  V08 tmp3         [V08,T03] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V09 tmp4         [V09,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+;* V10 tmp5         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
+;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;* V12 tmp7         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;  V13 tmp8         [V13,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
+;  V14 tmp9         [V14,T05] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V15 cse0         [V15,T09] (  3,  1.50)    long  ->   x0         "CSE - moderate"
+;  V16 cse1         [V16,T08] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
 ;
 ; Lcl frame size = 8
 
@@ -94,7 +92,7 @@ G_M32569_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             b       G_M32569_IG07
@@ -105,16 +103,18 @@ G_M32569_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, #27
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #2 LSL #32
             ldr     x0, [x1]
             ; gcrRegs +[x0]
+            ; byrRegs -[x0]
                        ;; size=36 bbWeight=0.50 PerfScore 3.75
 G_M32569_IG07:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                      ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
@@ -124,10 +124,10 @@ G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs -[x19] +[x0]
             ; gcr arg pop 0
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=32 bbWeight=0.50 PerfScore 3.00
 G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
@@ -135,18 +135,20 @@ G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             mov     w1, #28
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #2 LSL #32
             ldr     x0, [x0]
             ; gcrRegs +[x0]
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=40 bbWeight=0.50 PerfScore 4.25
 G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
-            cbz     w20, G_M32569_IG14
+            cbz     w20, G_M32569_IG11
             mov     x0, x19
             ; gcrRegs +[x0]
             mov     w1, w20
@@ -159,43 +161,32 @@ G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            cbz     x0, G_M32569_IG13
-                       ;; size=40 bbWeight=0.50 PerfScore 4.50
-G_M32569_IG11:        ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #1 LSL #32
-            cmp     x2, x3
-            beq     G_M32569_IG13
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M32569_IG12:        ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            mov     x0, x3
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #1 LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-                      ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            b       G_M32569_IG16
+                       ;; size=56 bbWeight=0.50 PerfScore 5.75
+G_M32569_IG11:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
             ldr     x0, [x19, #0x10]
-            cbz     x0, G_M32569_IG16
+            cbz     x0, G_M32569_IG13
             bl      <unknown method>
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
             ; gcrRegs +[x20]
-            cbz     x20, G_M32569_IG16
+            cbz     x20, G_M32569_IG13
             ldr     x0, [x20]
             ; gcrRegs -[x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            beq     G_M32569_IG15
+            beq     G_M32569_IG12
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
@@ -209,10 +200,10 @@ G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcrRegs -[x0 x19]
             ; gcr arg pop 0
                        ;; size=80 bbWeight=0.50 PerfScore 10.00
-G_M32569_IG15:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG17
+G_M32569_IG12:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M32569_IG14
                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20] +[x19]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -226,7 +217,7 @@ G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             mov     x20, x0
             ; gcrRegs +[x20]
                        ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -236,14 +227,14 @@ G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             ldr     x1, [x1]
             ldr     wzr, [x0]
                        ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M32569_IG18:        ; bbWeight=0.50, epilog, nogc, extend
+G_M32569_IG15:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x1
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x20]
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
@@ -251,7 +242,7 @@ G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
 
-; Total bytes of code 540, prolog size 24, PerfScore 64.94, instruction count 135, allocated bytes for code 540 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
+; Total bytes of code 520, prolog size 24, PerfScore 64.00, instruction count 130, allocated bytes for code 520 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -262,7 +253,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 135 (0x00087) Actual length = 540 (0x00021c)
+  Function Length   : 130 (0x00082) Actual length = 520 (0x000208)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-16 (-1.76%) : 13698.dasm - System.Linq.Enumerable:ContainsSystem.__Canon:ubyte (FullOpts)
@@ -7,97 +7,91 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T12] ( 15, 10.84)    long  ->  x21         single-def
-;  V01 arg0         [V01,T15] (  5,  5   )     ref  ->  x22         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V02 arg1         [V02,T07] (  4, 18   )     ref  ->  x19         class-hnd single-def <System.__Canon>
-;  V03 arg2         [V03,T11] (  4, 11   )     ref  ->  x20         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
-;  V04 loc0         [V04,T05] (  7, 20   )     ref  ->  [fp+0x20]  class-hnd EH-live spill-single-def <<unknown class>>
-;  V05 loc1         [V05,T09] (  2, 16   )     ref  ->  x21         class-hnd <System.__Canon>
-;  V06 loc2         [V06,T32] (  3,  3   )   ubyte  ->  [fp+0x2C]  do-not-enreg[Z] EH-live
-;  V07 loc3         [V07,T06] (  7, 20   )     ref  ->  [fp+0x18]  class-hnd EH-live spill-single-def <<unknown class>>
-;  V08 loc4         [V08,T10] (  2, 16   )     ref  ->   x1         class-hnd <System.__Canon>
+;  V00 TypeCtx      [V00,T00] ( 15, 48.92)    long  ->  x19         single-def
+;  V01 arg0         [V01,T21] (  5,  5   )     ref  ->  x22         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V02 arg1         [V02,T17] (  4, 18   )     ref  ->  x20         class-hnd single-def <System.__Canon>
+;  V03 arg2         [V03,T20] (  4, 11   )     ref  ->  x21         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+;  V04 loc0         [V04,T15] (  7, 20   )     ref  ->  [fp+0x18]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V05 loc1         [V05,T18] (  2, 16   )     ref  ->  x22         class-hnd <System.__Canon>
+;  V06 loc2         [V06,T26] (  3,  3   )   ubyte  ->  [fp+0x24]  do-not-enreg[Z] EH-live
+;  V07 loc3         [V07,T16] (  7, 20   )     ref  ->  [fp+0x10]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V08 loc4         [V08,T19] (  2, 16   )     ref  ->  x22         class-hnd <System.__Canon>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V11 tmp2         [V11,T16] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V11 tmp2         [V11,T22] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V12 tmp3         [V12    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V13 tmp4         [V13,T01] (  3, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V13 tmp4         [V13,T01] (  4, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V15 tmp6         [V15,T02] (  3, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V15 tmp6         [V15,T02] (  4, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V16 tmp7         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V17 tmp8         [V17,T17] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V17 tmp8         [V17,T23] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V18 tmp9         [V18    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V19 tmp10        [V19,T03] (  3, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V19 tmp10        [V19,T03] (  4, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V20 tmp11        [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V21 tmp12        [V21,T00] (  3, 48   )     ref  ->   x0         "argument with side effect"
-;  V22 PSPSym       [V22,T33] (  1,  1   )    long  ->  [fp+0x38]  do-not-enreg[V] "PSPSym"
-;  V23 cse0         [V23,T08] (  4, 18   )    long  ->  x24         hoist multi-def "CSE - aggressive"
-;  V24 cse1         [V24,T13] (  2,  9   )    long  ->  x22         hoist "CSE - aggressive"
-;  V25 cse2         [V25,T14] (  2,  9   )    long  ->  x22         hoist "CSE - aggressive"
-;  V26 cse3         [V26,T04] ( 12, 26   )    long  ->  x23         multi-def "CSE - aggressive"
-;  V27 rat0         [V27,T18] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V28 rat1         [V28,T28] (  3,  4   )    long  ->  x24         "runtime lookup"
-;  V29 rat2         [V29,T19] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V30 rat3         [V30,T24] (  3,  4.48)    long  ->  x24         "fgMakeTemp is creating a new local variable"
-;  V31 rat4         [V31,T29] (  3,  4   )    long  ->  x22         "runtime lookup"
-;  V32 rat5         [V32,T20] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V33 rat6         [V33,T25] (  3,  4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;  V34 rat7         [V34,T21] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V35 rat8         [V35,T30] (  3,  4   )    long  ->  x24         "runtime lookup"
-;  V36 rat9         [V36,T22] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V37 rat10        [V37,T26] (  3,  4.48)    long  ->  x24         "fgMakeTemp is creating a new local variable"
-;  V38 rat11        [V38,T31] (  3,  4   )    long  ->  x22         "runtime lookup"
-;  V39 rat12        [V39,T23] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V40 rat13        [V40,T27] (  3,  4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
+;  V21 tmp12        [V21,T04] (  3, 48   )     ref  ->   x0         "argument with side effect"
+;  V22 PSPSym       [V22,T27] (  1,  1   )    long  ->  [fp+0x30]  do-not-enreg[V] "PSPSym"
+;  V23 cse0         [V23,T14] ( 12, 26   )    long  ->  x23         multi-def "CSE - aggressive"
+;  V24 rat0         [V24,T24] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V25 rat1         [V25,T05] (  3, 44.80)    long  ->   x0         "spilling expr"
+;  V26 rat2         [V26,T09] (  3, 35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V27 rat3         [V27,T13] (  3, 32   )    long  ->   x0         "runtime lookup"
+;  V28 rat4         [V28,T06] (  3, 44.80)    long  ->   x0         "spilling expr"
+;  V29 rat5         [V29,T10] (  3, 35.84)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V30 rat6         [V30,T25] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V31 rat7         [V31,T07] (  3, 44.80)    long  ->   x0         "spilling expr"
+;  V32 rat8         [V32,T11] (  3, 35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V33 rat9         [V33,T08] (  3, 44.80)    long  ->   x0         "spilling expr"
+;  V34 rat10        [V34,T12] (  3, 35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 48
+; Lcl frame size = 40
 
 G_M26627_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x70]!
-            stp     x19, x20, [sp, #0x40]
-            stp     x21, x22, [sp, #0x50]
-            stp     x23, x24, [sp, #0x60]
+            stp     fp, lr, [sp, #-0x60]!
+            stp     x19, x20, [sp, #0x38]
+            stp     x21, x22, [sp, #0x48]
+            str     x23, [sp, #0x58]
             mov     fp, sp
-            add     x4, sp, #112
-            stp     x0, x4, [fp, #0x30]    // [V22 PSPSym]
-            mov     x21, x0
+            add     x4, sp, #96
+            stp     x0, x4, [fp, #0x28]    // [V22 PSPSym]
+            mov     x19, x0
             mov     x22, x1
             ; gcrRegs +[x22]
-            mov     x19, x2
-            ; gcrRegs +[x19]
-            mov     x20, x3
+            mov     x20, x2
             ; gcrRegs +[x20]
+            mov     x21, x3
+            ; gcrRegs +[x21]
                        ;; size=44 bbWeight=1 PerfScore 8.00
-G_M26627_IG02:        ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
-            cbz     x22, G_M26627_IG42
-            cbnz    x20, G_M26627_IG20
-            ldr     x0, [x21, #0x38]
+G_M26627_IG02:        ; bbWeight=1, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+            cbz     x22, G_M26627_IG44
+            cbnz    x21, G_M26627_IG21
+            ldr     x0, [x19, #0x38]
             ldr     x11, [x0, #0x10]
             cbz     x11, G_M26627_IG04
                        ;; size=20 bbWeight=1 PerfScore 9.00
-G_M26627_IG03:        ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x20]
+G_M26627_IG03:        ; bbWeight=0.80, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x21]
             b       G_M26627_IG05
                        ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M26627_IG04:        ; bbWeight=0.20, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x21
+G_M26627_IG04:        ; bbWeight=0.20, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M26627_IG05:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M26627_IG05:        ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
             mov     x0, x22
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
             ; gcrRegs -[x22]
             ; gcr arg pop 0
-            str     x0, [fp, #0x20]   // [V04 loc0]
+            str     x0, [fp, #0x18]  // [V04 loc0]
             ; GC ptr vars +{V04}
                        ;; size=16 bbWeight=1 PerfScore 5.50
-G_M26627_IG06:        ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26627_IG06:        ; bbWeight=1, gcVars=0000000000008000 {V04}, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, gcvars, byref, isz
             movz    x23, #0xD1FFAB1E
             movk    x23, #0xD1FFAB1E LSL #16
             movk    x23, #1 LSL #32
@@ -106,61 +100,60 @@ G_M26627_IG06:        ; bbWeight=1, gcVars=0000000000000020 {V04}, gcrefRegs=800
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M26627_IG17
-            ldr     x0, [x21, #0x38]
+            cbz     w0, G_M26627_IG18
+                       ;; size=28 bbWeight=1 PerfScore 7.00
+G_M26627_IG07:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
             ldr     x1, [x0, #0x08]
             cmp     x1, #24
-            ble     G_M26627_IG09
-                       ;; size=44 bbWeight=1 PerfScore 14.50
-G_M26627_IG07:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x24, [x0, #0x18]
-            cbz     x24, G_M26627_IG09
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M26627_IG08:        ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            b       G_M26627_IG10
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M26627_IG09:        ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x0, x21
+            ble     G_M26627_IG10
+                       ;; size=16 bbWeight=8 PerfScore 60.00
+G_M26627_IG08:        ; bbWeight=6.40, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x11, [x0, #0x18]
+            cbz     x11, G_M26627_IG10
+                       ;; size=8 bbWeight=6.40 PerfScore 25.60
+G_M26627_IG09:        ; bbWeight=5.12, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M26627_IG11
+                       ;; size=4 bbWeight=5.12 PerfScore 5.12
+G_M26627_IG10:        ; bbWeight=2.88, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
-            mov     x24, x0
-                       ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M26627_IG10:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x21, #0x38]
-            ldr     x1, [x0, #0x08]
-            cmp     x1, #40
-            ble     G_M26627_IG13
-                       ;; size=16 bbWeight=1 PerfScore 7.50
-G_M26627_IG11:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x0, #0x28]
-            cbz     x22, G_M26627_IG13
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M26627_IG12:        ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            b       G_M26627_IG14
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M26627_IG13:        ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x0, x21
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            ; gcr arg pop 0
-            mov     x22, x0
-                       ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M26627_IG14:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            mov     x11, x24
-            ldr     x0, [fp, #0x20]    // [V04 loc0]
+            mov     x11, x0
+                       ;; size=24 bbWeight=2.88 PerfScore 10.08
+G_M26627_IG11:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [fp, #0x18]    // [V04 loc0]
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
             ; gcr arg pop 0
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            mov     x0, x22
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            ldr     x0, [x19, #0x38]
             ; gcrRegs -[x0]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #40
+            ble     G_M26627_IG14
+                       ;; size=32 bbWeight=8 PerfScore 112.00
+G_M26627_IG12:        ; bbWeight=6.40, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x28]
+            cbz     x0, G_M26627_IG14
+                       ;; size=8 bbWeight=6.40 PerfScore 25.60
+G_M26627_IG13:        ; bbWeight=5.12, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+            b       G_M26627_IG15
+                       ;; size=4 bbWeight=5.12 PerfScore 5.12
+G_M26627_IG14:        ; bbWeight=2.88, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=20 bbWeight=2.88 PerfScore 8.64
...
  
+40 (+21.28%) : 2153.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTailSystem.__Canon:Microsoft.FSharp.Collections.FSharpList`1System.__Canon
@@ -7,62 +7,78 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T09] (  5,  7.80)    long  ->  x20         single-def
-;  V01 arg0         [V01,T06] (  5, 11   )     ref  ->  x19         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V00 TypeCtx      [V00,T08] (  7, 12.60)    long  ->  x19         single-def
+;  V01 arg0         [V01,T09] (  5, 11   )     ref  ->  x20         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;  V02 arg1         [V02,T02] (  5, 18   )     ref  ->   x2         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;* V03 loc0         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V04 loc1         [V04,T10] (  2,  8   )     ref  ->  x21         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V05 loc2         [V05,T11] (  2,  8   )     ref  ->  x22         class-hnd <System.__Canon>
-;  V06 loc3         [V06,T07] (  3, 12   )     ref  ->   x0         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V04 loc1         [V04,T11] (  2,  8   )     ref  ->  x21         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V05 loc2         [V05,T12] (  2,  8   )     ref  ->  x22         class-hnd <System.__Canon>
+;  V06 loc3         [V06,T10] (  3, 12   )     ref  ->   x0         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V08 tmp1         [V08,T12] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V08 tmp1         [V08,T04] (  3, 16   )    long  ->  x23         "spilling helperCall"
 ;* V09 tmp2         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp3         [V10,T00] (  3, 24   )    long  ->  x23         "argument with side effect"
-;  V11 tmp4         [V11,T05] (  2, 16   )     ref  ->   x2         "argument with side effect"
-;  V12 cse0         [V12,T08] (  2,  8   )    long  ->  x23         "CSE - aggressive"
-;  V13 cse1         [V13,T03] (  3, 20   )     ref  ->  x21         "CSE - aggressive"
-;  V14 rat0         [V14,T04] (  3, 16   )    long  ->  x23         "runtime lookup"
-;  V15 rat1         [V15,T01] (  3, 22.40)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V10 tmp3         [V10,T07] (  2, 16   )    long  ->  x24         "argument with side effect"
+;  V11 tmp4         [V11,T06] (  2, 16   )     ref  ->   x2         "argument with side effect"
+;  V12 cse0         [V12,T03] (  3, 20   )     ref  ->  x21         "CSE - aggressive"
+;  V13 rat0         [V13,T00] (  3, 22.40)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V14 rat1         [V14,T05] (  3, 16   )    long  ->  x24         "runtime lookup"
+;  V15 rat2         [V15,T01] (  3, 22.40)    long  ->  x24         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M63806_IG01:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x18]
-            stp     x21, x22, [sp, #0x28]
-            str     x23, [sp, #0x38]
+            stp     fp, lr, [sp, #-0x50]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
+            stp     x23, x24, [sp, #0x40]
             mov     fp, sp
-            str     x0, [fp, #0x10]
-            mov     x20, x0
-            mov     x19, x1
-            ; gcrRegs +[x19]
+            str     x0, [fp, #0x18]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
                        ;; size=32 bbWeight=8 PerfScore 52.00
-G_M63806_IG02:        ; bbWeight=8, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+G_M63806_IG02:        ; bbWeight=8, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x2]
             ldr     x21, [x2, #0x10]
             ; gcrRegs +[x21]
-            cbz     x21, G_M63806_IG07
+            cbz     x21, G_M63806_IG10
                        ;; size=8 bbWeight=8 PerfScore 32.00
-G_M63806_IG03:        ; bbWeight=4, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M63806_IG03:        ; bbWeight=4, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=0000 {}, byref, isz
             ldr     x22, [x2, #0x08]
             ; gcrRegs +[x22]
-            ldr     x0, [x20, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x23, [x0, #0x10]
             cbz     x23, G_M63806_IG05
                        ;; size=16 bbWeight=4 PerfScore 40.00
-G_M63806_IG04:        ; bbWeight=3.20, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
+G_M63806_IG04:        ; bbWeight=3.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x2]
             b       G_M63806_IG06
                        ;; size=4 bbWeight=3.20 PerfScore 3.20
-G_M63806_IG05:        ; bbWeight=0.80, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x20
+G_M63806_IG05:        ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x23, x0
                        ;; size=24 bbWeight=0.80 PerfScore 2.80
-G_M63806_IG06:        ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
+G_M63806_IG06:        ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x24, [x0, #0x10]
+            cbz     x24, G_M63806_IG08
+                       ;; size=12 bbWeight=4 PerfScore 28.00
+G_M63806_IG07:        ; bbWeight=3.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+            b       G_M63806_IG09
+                       ;; size=4 bbWeight=3.20 PerfScore 3.20
+G_M63806_IG08:        ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            mov     x24, x0
+                       ;; size=24 bbWeight=0.80 PerfScore 2.80
+G_M63806_IG09:        ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
             mov     x0, x23
             movz    x1, #0xD1FFAB1E      // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
             movk    x1, #0xD1FFAB1E LSL #16
@@ -72,7 +88,7 @@ G_M63806_IG06:        ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=00
             ; gcrRegs +[x0]
             mov     x2, x0
             ; gcrRegs +[x2]
-            mov     x0, x23
+            mov     x0, x24
             ; gcrRegs -[x0]
             mov     x1, x22
             ; gcrRegs +[x1]
@@ -82,33 +98,33 @@ G_M63806_IG06:        ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=00
             ldr     x3, [x3]
             blr     x3
             ; gcrRegs -[x1-x2 x22] +[x0]
-            add     x14, x19, #16
+            add     x14, x20, #16
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x19]
+            ; gcrRegs -[x15 x20]
             ; byrRegs -[x14]
             mov     x2, x21
             ; gcrRegs +[x2]
-            mov     x19, x0
-            ; gcrRegs +[x19]
+            mov     x20, x0
+            ; gcrRegs +[x20]
             b       G_M63806_IG02
                        ;; size=80 bbWeight=4 PerfScore 68.00
-G_M63806_IG07:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M63806_IG10:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x2 x21]
-            mov     x0, x19
+            mov     x0, x20
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=1 PerfScore 0.50
-G_M63806_IG08:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x40
+G_M63806_IG11:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x23, x24, [sp, #0x40]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x50
             ret     lr
-                        ;; size=20 bbWeight=1 PerfScore 6.00
+                      ;; size=20 bbWeight=1 PerfScore 5.00
 
-; Total bytes of code 188, prolog size 24, PerfScore 204.50, instruction count 47, allocated bytes for code 188 (MethodHash=873c06c1) for method Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
+; Total bytes of code 228, prolog size 24, PerfScore 237.50, instruction count 57, allocated bytes for code 228 (MethodHash=873c06c1) for method Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -119,7 +135,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 47 (0x0002f) Actual length = 188 (0x0000bc)
+  Function Length   : 57 (0x00039) Actual length = 228 (0x0000e4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -127,9 +143,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    89          save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
+    E4          end
     E4          end
 
  
+44 (+32.35%) : 10694.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastVSystem.__Canon:Microsoft.FSharp.Core.FSharpValueOption`1System.__Canon
@@ -8,10 +8,10 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T02] (  5,  3.60)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T02] (  7,  4.20)    long  ->   x0         single-def
 ;  V01 arg0         [V01,T01] (  5, 14.50)     ref  ->   x1         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;* V02 loc0         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V03 loc1         [V03,T06] (  2,  1   )     ref  ->   x0         class-hnd single-def <System.__Canon>
+;  V03 loc1         [V03,T07] (  2,  1   )     ref  ->  x19         class-hnd single-def <System.__Canon>
 ;* V04 loc2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -19,25 +19,28 @@
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
 ;* V10 tmp5         [V10    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
-;  V11 tmp6         [V11,T07] (  2,  1   )     ref  ->   x0         single-def "field V07.item (fldOffset=0x0)" P-INDEP
-;  V12 tmp7         [V12,T09] (  2,  1   )     int  ->   x1         single-def "field V07._tag (fldOffset=0x8)" P-INDEP
+;  V11 tmp6         [V11,T08] (  2,  1   )     ref  ->   x0         single-def "field V07.item (fldOffset=0x0)" P-INDEP
+;  V12 tmp7         [V12,T10] (  2,  1   )     int  ->   x1         single-def "field V07._tag (fldOffset=0x8)" P-INDEP
 ;* V13 tmp8         [V13    ] (  0,  0   )     ref  ->  zero-ref    "field V09.item (fldOffset=0x0)" P-DEP
 ;* V14 tmp9         [V14    ] (  0,  0   )     int  ->  zero-ref    "field V09._tag (fldOffset=0x8)" P-DEP
-;  V15 tmp10        [V15,T08] (  2,  1   )     ref  ->   x0         single-def "field V10.item (fldOffset=0x0)" P-INDEP
-;  V16 tmp11        [V16,T10] (  2,  1   )     int  ->   x1         single-def "field V10._tag (fldOffset=0x8)" P-INDEP
-;  V17 tmp12        [V17,T05] (  3,  1.50)  struct (16) [fp+0x18]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
+;  V15 tmp10        [V15,T09] (  2,  1   )     ref  ->   x0         single-def "field V10.item (fldOffset=0x0)" P-INDEP
+;  V16 tmp11        [V16,T11] (  2,  1   )     int  ->   x1         single-def "field V10._tag (fldOffset=0x8)" P-INDEP
+;  V17 tmp12        [V17,T06] (  3,  1.50)  struct (16) [fp+0x10]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
 ;  V18 cse0         [V18,T00] (  4, 24   )     ref  ->   x2         "CSE - aggressive"
-;  V19 rat0         [V19,T04] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V19 rat0         [V19,T05] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V20 rat1         [V20,T03] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V21 rat2         [V21,T12] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V22 rat3         [V22,T04] (  2,  2   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 32
+; Lcl frame size = 24
 
-G_M49887_IG01:        ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M49887_IG01:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
+            str     x19, [sp, #0x28]
             mov     fp, sp
-            stp     xzr, xzr, [fp, #0x18]    // [V17 tmp12], [V17 tmp12+0x08]
-            str     x0, [fp, #0x28]
-                       ;; size=16 bbWeight=8 PerfScore 28.00
+            stp     xzr, xzr, [fp, #0x10]    // [V17 tmp12], [V17 tmp12+0x08]
+            str     x0, [fp, #0x20]
+                       ;; size=20 bbWeight=8 PerfScore 36.00
 G_M49887_IG02:        ; bbWeight=8, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x1]
             ldr     x2, [x1, #0x10]
@@ -64,7 +67,7 @@ G_M49887_IG06:        ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
             mov     x1, x0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
@@ -77,38 +80,54 @@ G_M49887_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             blr     x1
             ; gcrRegs +[x0]
             ; gcr arg pop 0
-            stp     x0, x1, [fp, #0x18]   // [V17 tmp12], [V17 tmp12+0x08]
-            ldr     x0, [fp, #0x18]    // [V17 tmp12]
-            ldr     w1, [fp, #0x20]    // [V17 tmp12+0x08]
+            stp     x0, x1, [fp, #0x10]    // [V17 tmp12], [V17 tmp12+0x08]
+            ldr     x0, [fp, #0x10]    // [V17 tmp12]
+            ldr     w1, [fp, #0x18]    // [V17 tmp12+0x08]
                      ;; size=36 bbWeight=0.50 PerfScore 5.50
 G_M49887_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x19, [sp, #0x28]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M49887_IG09:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+                     ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M49887_IG09:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0] +[x1]
-            ldr     x0, [x1, #0x08]
-            ; gcrRegs +[x0]
-            mov     w1, #1
+            ldr     x19, [x1, #0x08]
+            ; gcrRegs +[x19]
+            ldr     x1, [x0, #0x38]
             ; gcrRegs -[x1]
-                       ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M49887_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x1, [x1, #0x10]
+            cbnz    x1, G_M49887_IG11
+                       ;; size=16 bbWeight=0.50 PerfScore 5.00
+G_M49887_IG10:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=16 bbWeight=0.10 PerfScore 0.25
+G_M49887_IG11:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            mov     w1, #1
+            mov     x0, x19
+            ; gcrRegs +[x0]
+                       ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M49887_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x19, [sp, #0x28]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=8 bbWeight=0.50 PerfScore 1.00
+                        ;; size=12 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 136, prolog size 16, PerfScore 95.45, instruction count 34, allocated bytes for code 136 (MethodHash=bb143d20) for method Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
+; Total bytes of code 180, prolog size 20, PerfScore 109.45, instruction count 45, allocated bytes for code 180 (MethodHash=bb143d20) for method Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
   >> Start offset   : 0x000000 (not in unwind data)
   >>   End offset   : 0xd1ffab1e (not in unwind data)
-  Code Words        : 1
+  Code Words        : 2
   Epilog Count      : 2
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 34 (0x00022) Actual length = 136 (0x000088)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -119,7 +138,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D0 05       save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
     85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
+    E4          end
+    E4          end
 
  
+48 (+32.43%) : 9161.dasm - Internal.Utilities.Library.ResultOrException:otherwiseSystem.__Canon:Internal.Utilities.Library.ResultOrException`1System.__Canon
@@ -8,9 +8,9 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 RetBuf       [V00,T02] (  4,  3   )   byref  ->  x20         single-def
-;  V01 TypeCtx      [V01,T01] (  5,  3.60)    long  ->   x0         single-def
-;  V02 arg0         [V02,T03] (  4,  3   )     ref  ->   x2         class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
+;  V00 RetBuf       [V00,T03] (  4,  3   )   byref  ->  x21         single-def
+;  V01 TypeCtx      [V01,T01] (  7,  4.80)    long  ->  x20         single-def
+;  V02 arg0         [V02,T04] (  4,  3   )     ref  ->  x22         class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
 ;  V03 arg1         [V03,T00] (  4,  7   )   byref  ->  x19         ld-addr-op single-def
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 loc1         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -19,83 +19,101 @@
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    "field V03._exception (fldOffset=0x8)" P-INDEP
 ;* V09 tmp5         [V09    ] (  0,  0   )     int  ->  zero-ref    "field V03._tag (fldOffset=0x10)" P-INDEP
 ;* V10 tmp6         [V10    ] (  0,  0   )  struct (24) zero-ref    "Promoted implicit byref" <Internal.Utilities.Library.ResultOrException`1[System.__Canon]>
-;  V11 tmp7         [V11,T06] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V12 rat0         [V12,T05] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V13 rat1         [V13,T04] (  3,  2.80)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V11 tmp7         [V11,T07] (  2,  2   )    long  ->   x0         "argument with side effect"
+;* V12 rat0         [V12,T08] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V13 rat1         [V13,T02] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V14 rat2         [V14,T06] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V15 rat3         [V15,T05] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
 G_M63339_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
+            stp     fp, lr, [sp, #-0x40]!
             stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
             str     x0, [fp, #0x18]
+            mov     x20, x0
+            mov     x22, x1
+            ; gcrRegs +[x22]
             mov     x19, x2
             ; byrRegs +[x19]
-            mov     x20, x8
-            ; byrRegs +[x20]
-            mov     x2, x1
-            ; gcrRegs +[x2]
-                       ;; size=28 bbWeight=1 PerfScore 5.00
-G_M63339_IG02:        ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=180000 {x19 x20}, byref, isz
-            ldr     w1, [x19, #0x10]
-            cmp     w1, #1
-            beq     G_M63339_IG08
-                       ;; size=12 bbWeight=1 PerfScore 4.50
-G_M63339_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
-            ; gcrRegs -[x2]
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x10]
-            cbz     x2, G_M63339_IG05
-                       ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M63339_IG04:        ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
-            mov     x0, x2
-            b       G_M63339_IG06
-                       ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M63339_IG05:        ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+            mov     x21, x8
+            ; byrRegs +[x21]
+                       ;; size=36 bbWeight=1 PerfScore 6.50
+G_M63339_IG02:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz
+            ldr     x0, [x20, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M63339_IG04
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M63339_IG03:        ; bbWeight=0.20, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref
+            mov     x0, x20
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
-                        ;; size=16 bbWeight=0.10 PerfScore 0.25
-G_M63339_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+                      ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M63339_IG04:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz
+            ldr     w0, [x19, #0x10]
+            cmp     w0, #1
+            beq     G_M63339_IG10
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M63339_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref, isz
+            ; gcrRegs -[x22]
+            ldr     x0, [x20, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M63339_IG07
+                       ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M63339_IG06:        ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
+            b       G_M63339_IG08
+                       ;; size=4 bbWeight=0.40 PerfScore 0.40
+G_M63339_IG07:        ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
+            mov     x0, x20
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=20 bbWeight=0.10 PerfScore 0.30
+G_M63339_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
             ldr     x1, [x19]
             ; gcrRegs +[x1]
-            mov     x8, x20
+            mov     x8, x21
             ; byrRegs +[x8]
             movz    x2, #0xD1FFAB1E      // code for Internal.Utilities.Library.ResultOrException`1[System.__Canon]:NewResult(System.__Canon):Internal.Utilities.Library.ResultOrException`1[System.__Canon]
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
             ldr     x2, [x2]
                        ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M63339_IG07:        ; bbWeight=0.50, epilog, nogc, extend
+G_M63339_IG09:        ; bbWeight=0.50, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x30
+            ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M63339_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=100000 {x20}, gcvars, byref
-            ; gcrRegs -[x1] +[x2]
+                        ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M63339_IG10:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref
+            ; gcrRegs -[x1] +[x22]
             ; byrRegs -[x8 x19]
-            mov     x0, x2
+            mov     x0, x22
             ; gcrRegs +[x0]
-            mov     x8, x20
+            mov     x8, x21
             ; byrRegs +[x8]
             mov     x1, xzr
-            ldr     x2, [x2]
-            ; gcrRegs -[x2]
+            ldr     x2, [x22]
             ldr     x2, [x2, #0x48]
             ldr     x2, [x2, #0x20]
                        ;; size=24 bbWeight=0.50 PerfScore 5.25
-G_M63339_IG09:        ; bbWeight=0.50, epilog, nogc, extend
+G_M63339_IG11:        ; bbWeight=0.50, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x30
+            ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=12 bbWeight=0.50 PerfScore 1.50
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 148, prolog size 28, PerfScore 26.10, instruction count 37, allocated bytes for code 148 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
+; Total bytes of code 196, prolog size 36, PerfScore 36.05, instruction count 49, allocated bytes for code 196 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -106,7 +124,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 37 (0x00025) Actual length = 148 (0x000094)
+  Function Length   : 49 (0x00031) Actual length = 196 (0x0000c4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -117,9 +135,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    E6          save_next
     C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
-    E4          end
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
     E4          end
     E4          end
  
  
  
Details
Improvements/regressions per collection
| Collection | 
Contexts with diffs | 
Improvements | 
Regressions | 
Same size | 
Improvements (bytes) | 
Regressions (bytes) | 
| benchmarks.run.osx.arm64.checked.mch | 
65 | 
15 | 
25 | 
25 | 
-228 | 
+1,112 | 
| benchmarks.run_pgo.osx.arm64.checked.mch | 
65 | 
18 | 
14 | 
33 | 
-624 | 
+632 | 
| benchmarks.run_tiered.osx.arm64.checked.mch | 
43 | 
10 | 
6 | 
27 | 
-456 | 
+264 | 
| coreclr_tests.run.osx.arm64.checked.mch | 
84 | 
48 | 
29 | 
7 | 
-248 | 
+348 | 
| libraries.crossgen2.osx.arm64.checked.mch | 
0 | 
0 | 
0 | 
0 | 
-0 | 
+0 | 
| libraries.pmi.osx.arm64.checked.mch | 
115 | 
16 | 
76 | 
23 | 
-400 | 
+3,648 | 
| libraries_tests.run.osx.arm64.Release.mch | 
19 | 
4 | 
1 | 
14 | 
-116 | 
+48 | 
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 
97 | 
17 | 
41 | 
39 | 
-148 | 
+2,940 | 
| realworld.run.osx.arm64.checked.mch | 
94 | 
11 | 
60 | 
23 | 
-100 | 
+5,384 | 
 | 
582 | 
139 | 
252 | 
191 | 
-2,320 | 
+14,376 | 
Context information
| Collection | 
Diffed contexts | 
MinOpts | 
FullOpts | 
Missed, base | 
Missed, diff | 
| benchmarks.run.osx.arm64.checked.mch | 
6,600 | 
3 | 
6,597 | 
0 (0.00%) | 
7,302 (51.07%) | 
| benchmarks.run_pgo.osx.arm64.checked.mch | 
15,683 | 
13,412 | 
2,271 | 
0 (0.00%) | 
8,294 (34.03%) | 
| benchmarks.run_tiered.osx.arm64.checked.mch | 
15,235 | 
13,154 | 
2,081 | 
0 (0.00%) | 
6,990 (30.90%) | 
| coreclr_tests.run.osx.arm64.checked.mch | 
2,268 | 
1,426 | 
842 | 
0 (0.00%) | 
1,864 (41.17%) | 
| libraries.crossgen2.osx.arm64.checked.mch | 
8,189 | 
10 | 
8,179 | 
0 (0.00%) | 
2,935 (25.48%) | 
| libraries.pmi.osx.arm64.checked.mch | 
12,226 | 
9 | 
12,217 | 
0 (0.00%) | 
4,382 (25.77%) | 
| libraries_tests.run.osx.arm64.Release.mch | 
12,381 | 
12,270 | 
111 | 
0 (0.00%) | 
4,031 (23.98%) | 
| librariestestsnotieredcompilation.run.osx.arm64.Release.mch | 
6,779 | 
0 | 
6,779 | 
0 (0.00%) | 
5,096 (41.53%) | 
| realworld.run.osx.arm64.checked.mch | 
11,225 | 
1 | 
11,224 | 
0 (0.00%) | 
6,467 (35.75%) | 
 | 
90,586 | 
40,285 | 
50,301 | 
0 (0.00%) | 
47,361 (33.47%) | 
jit-analyze output
benchmarks.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1340312 (overridden on cmd)
Total bytes of diff: 1341196 (overridden on cmd)
Total bytes of delta: 884 (0.07 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         208 : 1596.dasm (19.62 % of base)
         144 : 9512.dasm (45.00 % of base)
          92 : 10264.dasm (13.37 % of base)
          56 : 3315.dasm (36.84 % of base)
          56 : 14059.dasm (6.06 % of base)
          44 : 3035.dasm (9.57 % of base)
          44 : 968.dasm (9.02 % of base)
          44 : 6167.dasm (7.48 % of base)
          44 : 5412.dasm (14.29 % of base)
          40 : 1250.dasm (15.38 % of base)
          40 : 2596.dasm (10.42 % of base)
          40 : 9345.dasm (20.83 % of base)
          40 : 9660.dasm (4.18 % of base)
          40 : 5677.dasm (8.47 % of base)
          40 : 1183.dasm (8.47 % of base)
          32 : 14060.dasm (12.70 % of base)
          32 : 1576.dasm (7.69 % of base)
          28 : 10958.dasm (4.55 % of base)
          24 : 734.dasm (5.45 % of base)
           4 : 11939.dasm (5.56 % of base)
Top file improvements (bytes):
         -48 : 9542.dasm (-10.53 % of base)
         -28 : 6979.dasm (-10.61 % of base)
         -24 : 12938.dasm (-2.02 % of base)
         -24 : 86.dasm (-4.51 % of base)
         -24 : 6142.dasm (-3.31 % of base)
         -20 : 387.dasm (-3.70 % of base)
         -20 : 3126.dasm (-5.49 % of base)
         -12 : 12501.dasm (-2.75 % of base)
          -4 : 10369.dasm (-1.23 % of base)
          -4 : 14283.dasm (-2.78 % of base)
          -4 : 6177.dasm (-0.58 % of base)
          -4 : 9319.dasm (-0.29 % of base)
          -4 : 12649.dasm (-2.78 % of base)
          -4 : 839.dasm (-0.82 % of base)
          -4 : 840.dasm (-0.89 % of base)
39 total files with Code Size differences (15 improved, 24 regressed), 22 unchanged.
Top method regressions (bytes):
         208 (19.62 % of base) : 1596.dasm - System.Collections.Frozen.FrozenDictionary:GetExistingFrozenOrNewDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (FullOpts)
         144 (45.00 % of base) : 9512.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          92 (13.37 % of base) : 10264.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (FullOpts)
          56 (6.06 % of base) : 14059.dasm - System.Collections.Immutable.ImmutableQueue:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
          56 (36.84 % of base) : 3315.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
          44 (9.57 % of base) : 3035.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd[System.ValueTuple`2[System.__Canon,System.__Canon]](System.__Canon,System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          44 (9.02 % of base) : 968.dasm - System.Linq.Enumerable:MaxInteger[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,int]):int (FullOpts)
          44 (7.48 % of base) : 6167.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          44 (14.29 % of base) : 5412.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
          40 (15.38 % of base) : 1250.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
          40 (10.42 % of base) : 2596.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          40 (20.83 % of base) : 9345.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
          40 (8.47 % of base) : 1183.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (FullOpts)
          40 (8.47 % of base) : 5677.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
          40 (4.18 % of base) : 9660.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          32 (7.69 % of base) : 1576.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
          32 (12.70 % of base) : 14060.dasm - System.Collections.Immutable.ImmutableQueue:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
          28 (4.55 % of base) : 10958.dasm - Sigil.Impl.BufferedILGenerator`1[System.__Canon]:Join[System.__Canon](System.String,System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts)
          24 (5.45 % of base) : 734.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (2.70 % of base) : 6428.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
Top method improvements (bytes):
         -48 (-10.53 % of base) : 9542.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -28 (-10.61 % of base) : 6979.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
         -24 (-3.31 % of base) : 6142.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (FullOpts)
         -24 (-4.51 % of base) : 86.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -24 (-2.02 % of base) : 12938.dasm - System.Xml.Serialization.XmlReflectionImporter:CreateArrayElementsFromAttributes(System.Xml.Serialization.ArrayMapping,System.Xml.Serialization.XmlArrayItemAttributes,System.Type,System.String,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
         -20 (-5.49 % of base) : 3126.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
         -20 (-3.70 % of base) : 387.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -12 (-2.75 % of base) : 12501.dasm - System.Linq.Enumerable:<AggregateByIterator>g__PopulateDictionary|75_0[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-1.23 % of base) : 10369.dasm - Jil.Common.ExtensionMethods:ForEach[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
          -4 (-2.78 % of base) : 12649.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
          -4 (-2.78 % of base) : 14283.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
          -4 (-0.89 % of base) : 840.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.29 % of base) : 9319.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.82 % of base) : 839.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.58 % of base) : 6177.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
Top method regressions (percentages):
         144 (45.00 % of base) : 9512.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          56 (36.84 % of base) : 3315.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
          40 (20.83 % of base) : 9345.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
         208 (19.62 % of base) : 1596.dasm - System.Collections.Frozen.FrozenDictionary:GetExistingFrozenOrNewDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (FullOpts)
          40 (15.38 % of base) : 1250.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
          44 (14.29 % of base) : 5412.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.__Canon](System.Collections.Generic.List`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
          92 (13.37 % of base) : 10264.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (FullOpts)
          32 (12.70 % of base) : 14060.dasm - System.Collections.Immutable.ImmutableQueue:Create[System.__Canon](System.__Canon[]):System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
          40 (10.42 % of base) : 2596.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          44 (9.57 % of base) : 3035.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd[System.ValueTuple`2[System.__Canon,System.__Canon]](System.__Canon,System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          44 (9.02 % of base) : 968.dasm - System.Linq.Enumerable:MaxInteger[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,int]):int (FullOpts)
          40 (8.47 % of base) : 1183.dasm - System.Array:Sort[uint,System.__Canon](uint[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[uint]) (FullOpts)
          40 (8.47 % of base) : 5677.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
          32 (7.69 % of base) : 1576.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
          44 (7.48 % of base) : 6167.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          56 (6.06 % of base) : 14059.dasm - System.Collections.Immutable.ImmutableQueue:CreateRange[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableQueue`1[System.__Canon] (FullOpts)
           4 (5.56 % of base) : 11939.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
          24 (5.45 % of base) : 734.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          28 (4.55 % of base) : 10958.dasm - Sigil.Impl.BufferedILGenerator`1[System.__Canon]:Join[System.__Canon](System.String,System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts)
           4 (4.55 % of base) : 6522.dasm - System.Convert:ToBoolean(System.Object,System.IFormatProvider):ubyte (FullOpts)
Top method improvements (percentages):
         -28 (-10.61 % of base) : 6979.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
         -48 (-10.53 % of base) : 9542.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -20 (-5.49 % of base) : 3126.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
         -24 (-4.51 % of base) : 86.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-3.70 % of base) : 387.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -24 (-3.31 % of base) : 6142.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (FullOpts)
          -4 (-2.78 % of base) : 12649.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
          -4 (-2.78 % of base) : 14283.dasm - PerfLabTests.CastingPerf:IFooObjIsIFooInterAlia():this (FullOpts)
         -12 (-2.75 % of base) : 12501.dasm - System.Linq.Enumerable:<AggregateByIterator>g__PopulateDictionary|75_0[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
         -24 (-2.02 % of base) : 12938.dasm - System.Xml.Serialization.XmlReflectionImporter:CreateArrayElementsFromAttributes(System.Xml.Serialization.ArrayMapping,System.Xml.Serialization.XmlArrayItemAttributes,System.Type,System.String,System.Xml.Serialization.RecursionLimiter):this (FullOpts)
          -4 (-1.23 % of base) : 10369.dasm - Jil.Common.ExtensionMethods:ForEach[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
          -4 (-0.89 % of base) : 840.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.82 % of base) : 839.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.58 % of base) : 6177.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
          -4 (-0.29 % of base) : 9319.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
  
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: 2401052 (overridden on cmd)
Total bytes of diff: 2401060 (overridden on cmd)
Total bytes of delta: 8 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
          56 : 17839.dasm (36.84 % of base)
          52 : 22655.dasm (14.44 % of base)
          52 : 16133.dasm (27.08 % of base)
          48 : 22938.dasm (36.36 % of base)
          48 : 8409.dasm (36.36 % of base)
          48 : 17944.dasm (36.36 % of base)
          48 : 20387.dasm (36.36 % of base)
          48 : 20651.dasm (36.36 % of base)
          48 : 23012.dasm (36.36 % of base)
          48 : 9600.dasm (36.36 % of base)
          40 : 24208.dasm (12.35 % of base)
          40 : 5692.dasm (12.35 % of base)
          40 : 9754.dasm (12.35 % of base)
          16 : 8551.dasm (10.53 % of base)
Top file improvements (bytes):
        -140 : 14446.dasm (-8.77 % of base)
         -96 : 5990.dasm (-6.54 % of base)
         -36 : 9452.dasm (-19.15 % of base)
         -36 : 21057.dasm (-6.29 % of base)
         -24 : 24178.dasm (-2.87 % of base)
         -24 : 24427.dasm (-2.82 % of base)
         -24 : 8414.dasm (-2.82 % of base)
         -24 : 12790.dasm (-2.83 % of base)
         -24 : 16089.dasm (-2.83 % of base)
         -24 : 16164.dasm (-2.82 % of base)
         -24 : 16529.dasm (-2.82 % of base)
         -24 : 17963.dasm (-2.86 % of base)
         -24 : 20673.dasm (-2.82 % of base)
         -24 : 21375.dasm (-2.82 % of base)
         -24 : 22942.dasm (-4.48 % of base)
         -24 : 9615.dasm (-2.83 % of base)
         -20 : 14790.dasm (-5.49 % of base)
          -8 : 14241.dasm (-0.69 % of base)
32 total files with Code Size differences (18 improved, 14 regressed), 26 unchanged.
Top method regressions (bytes):
          56 (36.84 % of base) : 17839.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          52 (14.44 % of base) : 22655.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
          52 (27.08 % of base) : 16133.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier1)
          48 (36.36 % of base) : 22938.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 8409.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 17944.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 20387.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 20651.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 23012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 9600.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          40 (12.35 % of base) : 24208.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          40 (12.35 % of base) : 5692.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          40 (12.35 % of base) : 9754.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          16 (10.53 % of base) : 8551.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
Top method improvements (bytes):
        -140 (-8.77 % of base) : 14446.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
         -96 (-6.54 % of base) : 5990.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -36 (-19.15 % of base) : 9452.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
         -36 (-6.29 % of base) : 21057.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
         -24 (-2.87 % of base) : 24178.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 24427.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 8414.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.83 % of base) : 12790.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.83 % of base) : 16089.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 16164.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 16529.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.86 % of base) : 17963.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 20673.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 21375.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-4.48 % of base) : 22942.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.83 % of base) : 9615.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -20 (-5.49 % of base) : 14790.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
          -8 (-0.69 % of base) : 14241.dasm - System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[System.DateTimeOffset]]:TryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref,byref):ubyte:this (Tier0)
Top method regressions (percentages):
          56 (36.84 % of base) : 17839.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          48 (36.36 % of base) : 22938.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 8409.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 17944.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 20387.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 20651.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 23012.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 9600.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          52 (27.08 % of base) : 16133.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier1)
          52 (14.44 % of base) : 22655.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
          40 (12.35 % of base) : 24208.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          40 (12.35 % of base) : 5692.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          40 (12.35 % of base) : 9754.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          16 (10.53 % of base) : 8551.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
Top method improvements (percentages):
         -36 (-19.15 % of base) : 9452.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
        -140 (-8.77 % of base) : 14446.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
         -96 (-6.54 % of base) : 5990.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -36 (-6.29 % of base) : 21057.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
         -20 (-5.49 % of base) : 14790.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
         -24 (-4.48 % of base) : 22942.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.87 % of base) : 24178.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.86 % of base) : 17963.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.83 % of base) : 12790.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.83 % of base) : 16089.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.83 % of base) : 9615.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 24427.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 8414.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 16164.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 16529.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 20673.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-2.82 % of base) : 21375.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
          -8 (-0.69 % of base) : 14241.dasm - System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[System.DateTimeOffset]]:TryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref,byref):ubyte:this (Tier0)
  
benchmarks.run_tiered.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: 2330800 (overridden on cmd)
Total bytes of diff: 2330608 (overridden on cmd)
Total bytes of delta: -192 (-0.01 % of base)
    diff is an improvement.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
          56 : 6200.dasm (36.84 % of base)
          52 : 16185.dasm (27.08 % of base)
          52 : 21828.dasm (14.44 % of base)
          48 : 3373.dasm (36.36 % of base)
          40 : 8417.dasm (15.38 % of base)
          16 : 2105.dasm (10.53 % of base)
Top file improvements (bytes):
        -140 : 18653.dasm (-8.77 % of base)
        -124 : 2464.dasm (-14.16 % of base)
         -96 : 16544.dasm (-6.54 % of base)
         -24 : 3382.dasm (-4.51 % of base)
         -20 : 17256.dasm (-5.49 % of base)
         -20 : 4653.dasm (-3.70 % of base)
         -16 : 3272.dasm (-3.36 % of base)
          -8 : 2828.dasm (-0.69 % of base)
          -4 : 8420.dasm (-1.15 % of base)
          -4 : 8426.dasm (-0.89 % of base)
16 total files with Code Size differences (10 improved, 6 regressed), 27 unchanged.
Top method regressions (bytes):
          56 (36.84 % of base) : 6200.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          52 (14.44 % of base) : 21828.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
          52 (27.08 % of base) : 16185.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier1)
          48 (36.36 % of base) : 3373.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          40 (15.38 % of base) : 8417.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          16 (10.53 % of base) : 2105.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
Top method improvements (bytes):
        -140 (-8.77 % of base) : 18653.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
        -124 (-14.16 % of base) : 2464.dasm - System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[System.DateTimeOffset]]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier0)
         -96 (-6.54 % of base) : 16544.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -24 (-4.51 % of base) : 3382.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -20 (-5.49 % of base) : 17256.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
         -20 (-3.70 % of base) : 4653.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
         -16 (-3.36 % of base) : 3272.dasm - BenchmarksGame.Mandelbrot_2:DoBench(int,System.IO.MemoryStream,ubyte) (Tier1-OSR)
          -8 (-0.69 % of base) : 2828.dasm - System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[System.DateTimeOffset]]:TryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref,byref):ubyte:this (Tier0)
          -4 (-0.89 % of base) : 8426.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
          -4 (-1.15 % of base) : 8420.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
Top method regressions (percentages):
          56 (36.84 % of base) : 6200.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          48 (36.36 % of base) : 3373.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          52 (27.08 % of base) : 16185.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier1)
          40 (15.38 % of base) : 8417.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          52 (14.44 % of base) : 21828.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (Tier1)
          16 (10.53 % of base) : 2105.dasm - MicroBenchmarks.Serializers.DataGenerator:Generate[System.Nullable`1[System.DateTimeOffset]]():System.Nullable`1[System.DateTimeOffset] (Tier0)
Top method improvements (percentages):
        -124 (-14.16 % of base) : 2464.dasm - System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[System.DateTimeOffset]]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier0)
        -140 (-8.77 % of base) : 18653.dasm - Newtonsoft.Json.Utilities.BoxedPrimitives:.cctor() (Tier0)
         -96 (-6.54 % of base) : 16544.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -20 (-5.49 % of base) : 17256.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
         -24 (-4.51 % of base) : 3382.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -20 (-3.70 % of base) : 4653.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
         -16 (-3.36 % of base) : 3272.dasm - BenchmarksGame.Mandelbrot_2:DoBench(int,System.IO.MemoryStream,ubyte) (Tier1-OSR)
          -4 (-1.15 % of base) : 8420.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
          -4 (-0.89 % of base) : 8426.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
          -8 (-0.69 % of base) : 2828.dasm - System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[System.DateTimeOffset]]:TryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref,byref):ubyte:this (Tier0)
16 total methods with Code Size differences (10 improved, 6 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: 528604 (overridden on cmd)
Total bytes of diff: 528704 (overridden on cmd)
Total bytes of delta: 100 (0.02 % of base)
    diff is a regression.
    relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
          84 : 1001.dasm (20.39 % of base)
          84 : 1853.dasm (20.39 % of base)
          28 : 4219.dasm (9.86 % of base)
          12 : 3766.dasm (7.89 % of base)
          12 : 3917.dasm (7.89 % of base)
          12 : 4209.dasm (6.98 % of base)
          12 : 3949.dasm (8.33 % of base)
          12 : 4129.dasm (7.14 % of base)
          12 : 4199.dasm (6.82 % of base)
           4 : 3691.dasm (3.70 % of base)
           4 : 4059.dasm (3.70 % of base)
           4 : 4149.dasm (3.70 % of base)
           4 : 4159.dasm (3.70 % of base)
           4 : 4790.dasm (2.63 % of base)
           4 : 4794.dasm (2.63 % of base)
           4 : 3666.dasm (3.70 % of base)
           4 : 3679.dasm (3.70 % of base)
           4 : 3999.dasm (3.70 % of base)
           4 : 4119.dasm (3.70 % of base)
           4 : 4169.dasm (3.70 % of base)
Top file improvements (bytes):
         -32 : 2155.dasm (-17.39 % of base)
         -32 : 2643.dasm (-21.62 % of base)
          -4 : 3515.dasm (-3.70 % of base)
          -4 : 3708.dasm (-3.70 % of base)
          -4 : 3714.dasm (-3.70 % of base)
          -4 : 3731.dasm (-3.70 % of base)
          -4 : 3737.dasm (-3.70 % of base)
          -4 : 3795.dasm (-3.70 % of base)
          -4 : 3825.dasm (-3.70 % of base)
          -4 : 3835.dasm (-3.70 % of base)
          -4 : 3865.dasm (-3.70 % of base)
          -4 : 3875.dasm (-3.57 % of base)
          -4 : 3926.dasm (-3.57 % of base)
          -4 : 3967.dasm (-3.70 % of base)
          -4 : 3977.dasm (-3.70 % of base)
          -4 : 4089.dasm (-3.12 % of base)
          -4 : 3522.dasm (-3.70 % of base)
          -4 : 3697.dasm (-3.70 % of base)
          -4 : 3703.dasm (-3.70 % of base)
          -4 : 3720.dasm (-3.70 % of base)
54 total files with Code Size differences (31 improved, 23 regressed), 7 unchanged.
Top method regressions (bytes):
          84 (20.39 % of base) : 1001.dasm - System.IO.StreamReader:ValidateArgsAndOpenPath(System.String,System.Text.Encoding,int):System.IO.FileStream (Instrumented Tier1)
          84 (20.39 % of base) : 1853.dasm - System.IO.StreamReader:ValidateArgsAndOpenPath(System.String,System.Text.Encoding,int):System.IO.FileStream (Tier1)
          28 (9.86 % of base) : 4219.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 3917.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (8.33 % of base) : 3949.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 3766.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          12 (7.14 % of base) : 4129.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.82 % of base) : 4199.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.98 % of base) : 4209.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (2.63 % of base) : 4790.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 3666.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 3999.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4059.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (2.63 % of base) : 4794.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 3679.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 4119.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4149.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4159.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4169.dasm - NullableTest40:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4179.dasm - NullableTest41:BoxUnboxToQ(System.Object):ubyte (Tier0)
Top method improvements (bytes):
         -32 (-21.62 % of base) : 2643.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
         -32 (-17.39 % of base) : 2155.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
          -4 (-3.70 % of base) : 3515.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 3795.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3720.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.57 % of base) : 3885.dasm - NullableTest10:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3726.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3731.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.57 % of base) : 3905.dasm - NullableTest12:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3737.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.57 % of base) : 3742.dasm - NullableTest14:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.57 % of base) : 3926.dasm - NullableTest14:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.57 % of base) : 3937.dasm - NullableTest15:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3754.dasm - NullableTest16:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3967.dasm - NullableTest18:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3977.dasm - NullableTest19:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3522.dasm - NullableTest2:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 3805.dasm - NullableTest2:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.03 % of base) : 4029.dasm - NullableTest24:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3815.dasm - NullableTest3:BoxUnboxToQ(System.Object):ubyte (Tier0)
Top method regressions (percentages):
          84 (20.39 % of base) : 1001.dasm - System.IO.StreamReader:ValidateArgsAndOpenPath(System.String,System.Text.Encoding,int):System.IO.FileStream (Instrumented Tier1)
          84 (20.39 % of base) : 1853.dasm - System.IO.StreamReader:ValidateArgsAndOpenPath(System.String,System.Text.Encoding,int):System.IO.FileStream (Tier1)
          28 (9.86 % of base) : 4219.dasm - NullableTest45:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (8.33 % of base) : 3949.dasm - NullableTest16:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 3917.dasm - NullableTest13:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (7.89 % of base) : 3766.dasm - NullableTest18:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          12 (7.14 % of base) : 4129.dasm - NullableTest34:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.98 % of base) : 4209.dasm - NullableTest44:BoxUnboxToQ(System.Object):ubyte (Tier0)
          12 (6.82 % of base) : 4199.dasm - NullableTest43:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3666.dasm - NullableTest1:BoxUnboxToQ(IEmpty):ubyte (Tier0)
           4 (3.70 % of base) : 3999.dasm - NullableTest21:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4059.dasm - NullableTest27:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3679.dasm - NullableTest3:BoxUnboxToQ(IEmptyGen`1[int]):ubyte (Tier0)
           4 (3.70 % of base) : 4119.dasm - NullableTest33:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4149.dasm - NullableTest38:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4159.dasm - NullableTest39:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4169.dasm - NullableTest40:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4179.dasm - NullableTest41:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 4189.dasm - NullableTest42:BoxUnboxToQ(System.Object):ubyte (Tier0)
           4 (3.70 % of base) : 3691.dasm - NullableTest5:BoxUnboxToQ(IEmpty):ubyte (Tier0)
Top method improvements (percentages):
         -32 (-21.62 % of base) : 2643.dasm - System.Linq.Enumerable:Contains[int](System.Collections.Generic.IEnumerable`1[int],int):ubyte (Tier1)
         -32 (-17.39 % of base) : 2155.dasm - System.Threading.ThreadPool+<>c:<.cctor>b__52_0(System.Object):this (Tier1)
          -4 (-3.70 % of base) : 3515.dasm - NullableTest1:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 3795.dasm - NullableTest1:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3720.dasm - NullableTest10:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3726.dasm - NullableTest11:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3731.dasm - NullableTest12:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3737.dasm - NullableTest13:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3754.dasm - NullableTest16:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3967.dasm - NullableTest18:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3977.dasm - NullableTest19:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3522.dasm - NullableTest2:BoxUnboxToQ(System.Enum):ubyte (Tier0)
          -4 (-3.70 % of base) : 3805.dasm - NullableTest2:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3815.dasm - NullableTest3:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3825.dasm - NullableTest4:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3835.dasm - NullableTest5:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3697.dasm - NullableTest6:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3845.dasm - NullableTest6:BoxUnboxToQ(System.Object):ubyte (Tier0)
          -4 (-3.70 % of base) : 3703.dasm - NullableTest7:BoxUnboxToQ(System.IComparable):ubyte (Tier0)
          -4 (-3.70 % of base) : 3855.dasm - NullableTest7:BoxUnboxToQ(System.Object):ubyte (Tier0)
  
libraries.pmi.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1311668 (overridden on cmd)
Total bytes of diff: 1314916 (overridden on cmd)
Total bytes of delta: 3248 (0.25 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         144 : 12334.dasm (25.90 % of base)
         144 : 7491.dasm (75.00 % of base)
         144 : 12235.dasm (53.73 % of base)
         144 : 12332.dasm (25.90 % of base)
         144 : 7471.dasm (75.00 % of base)
         136 : 7493.dasm (58.62 % of base)
         136 : 7475.dasm (58.62 % of base)
         116 : 7469.dasm (87.88 % of base)
         116 : 7489.dasm (87.88 % of base)
         108 : 12256.dasm (25.00 % of base)
         104 : 7477.dasm (44.83 % of base)
         100 : 12282.dasm (19.38 % of base)
         100 : 12302.dasm (19.38 % of base)
         100 : 12263.dasm (19.38 % of base)
         100 : 12292.dasm (19.38 % of base)
         100 : 12312.dasm (19.38 % of base)
          88 : 8943.dasm (19.82 % of base)
          88 : 8950.dasm (20.75 % of base)
          76 : 7112.dasm (27.94 % of base)
          68 : 7110.dasm (30.36 % of base)
Top file improvements (bytes):
         -44 : 11769.dasm (-23.91 % of base)
         -44 : 11773.dasm (-17.74 % of base)
         -40 : 6021.dasm (-16.95 % of base)
         -28 : 408.dasm (-10.61 % of base)
         -24 : 2033.dasm (-3.51 % of base)
         -24 : 2036.dasm (-3.70 % of base)
         -24 : 3141.dasm (-13.33 % of base)
         -24 : 86.dasm (-4.51 % of base)
         -20 : 2073.dasm (-15.15 % of base)
         -20 : 8908.dasm (-8.47 % of base)
         -20 : 2046.dasm (-12.82 % of base)
         -20 : 2063.dasm (-15.15 % of base)
         -20 : 2064.dasm (-15.15 % of base)
         -20 : 2072.dasm (-15.15 % of base)
         -20 : 798.dasm (-3.79 % of base)
          -8 : 8901.dasm (-3.28 % of base)
63 total files with Code Size differences (16 improved, 47 regressed), 20 unchanged.
Top method regressions (bytes):
         144 (75.00 % of base) : 7491.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Memory`1[System.__Canon] (FullOpts)
         144 (75.00 % of base) : 7471.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
         144 (53.73 % of base) : 12235.dasm - System.Numerics.Vector:ConditionalSelect[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         144 (25.90 % of base) : 12332.dasm - System.Numerics.Vector:Max[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         144 (25.90 % of base) : 12334.dasm - System.Numerics.Vector:Min[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         136 (58.62 % of base) : 7493.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Memory`1[System.__Canon] (FullOpts)
         136 (58.62 % of base) : 7475.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Span`1[System.__Canon] (FullOpts)
         116 (87.88 % of base) : 7489.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Memory`1[System.__Canon] (FullOpts)
         116 (87.88 % of base) : 7469.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
         108 (25.00 % of base) : 12256.dasm - System.Numerics.Vector:Dot[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
         104 (44.83 % of base) : 7477.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
         100 (19.38 % of base) : 12263.dasm - System.Numerics.Vector:Equals[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         100 (19.38 % of base) : 12282.dasm - System.Numerics.Vector:GreaterThan[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         100 (19.38 % of base) : 12292.dasm - System.Numerics.Vector:GreaterThanOrEqual[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         100 (19.38 % of base) : 12302.dasm - System.Numerics.Vector:LessThan[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         100 (19.38 % of base) : 12312.dasm - System.Numerics.Vector:LessThanOrEqual[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
          88 (19.82 % of base) : 8943.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          88 (20.75 % of base) : 8950.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
          76 (27.94 % of base) : 7112.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
          68 (30.36 % of base) : 7110.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],int):System.Span`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
         -44 (-23.91 % of base) : 11769.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -44 (-17.74 % of base) : 11773.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
         -40 (-16.95 % of base) : 6021.dasm - System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
         -28 (-10.61 % of base) : 408.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
         -24 (-3.70 % of base) : 2036.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.EventInfo,System.Type,ubyte):System.Attribute[] (FullOpts)
         -24 (-3.51 % of base) : 2033.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (FullOpts)
         -24 (-13.33 % of base) : 3141.dasm - System.RuntimeType+RuntimeTypeCache:get_FunctionPointerReturnAndParameterTypes():System.Type[]:this (FullOpts)
         -24 (-4.51 % of base) : 86.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-12.82 % of base) : 2046.dasm - System.Attribute:CreateAttributeArrayHelper(System.Type,int):System.Attribute[] (FullOpts)
         -20 (-15.15 % of base) : 2072.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly):System.Attribute[] (FullOpts)
         -20 (-15.15 % of base) : 2073.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,ubyte):System.Attribute[] (FullOpts)
         -20 (-15.15 % of base) : 2063.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Module):System.Attribute[] (FullOpts)
         -20 (-15.15 % of base) : 2064.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Module,ubyte):System.Attribute[] (FullOpts)
         -20 (-3.79 % of base) : 798.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -20 (-8.47 % of base) : 8908.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
          -8 (-3.28 % of base) : 8901.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
Top method regressions (percentages):
         116 (87.88 % of base) : 7489.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Memory`1[System.__Canon] (FullOpts)
         116 (87.88 % of base) : 7469.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon]):System.Span`1[System.__Canon] (FullOpts)
         144 (75.00 % of base) : 7491.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Memory`1[System.__Canon] (FullOpts)
         144 (75.00 % of base) : 7471.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int):System.Span`1[System.__Canon] (FullOpts)
         136 (58.62 % of base) : 7493.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Memory`1[System.__Canon] (FullOpts)
         136 (58.62 % of base) : 7475.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],int,int):System.Span`1[System.__Canon] (FullOpts)
         144 (53.73 % of base) : 12235.dasm - System.Numerics.Vector:ConditionalSelect[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         104 (44.83 % of base) : 7477.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Range):System.Span`1[System.__Canon] (FullOpts)
          52 (37.14 % of base) : 7495.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts)
          56 (36.84 % of base) : 2752.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
          44 (36.67 % of base) : 7463.dasm - System.MemoryExtensions:Reverse[System.__Canon](System.Span`1[System.__Canon]) (FullOpts)
          56 (34.15 % of base) : 12201.dasm - System.Numerics.Vector:AndNot[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
          48 (33.33 % of base) : 7473.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.ArraySegment`1[System.__Canon],System.Index):System.Span`1[System.__Canon] (FullOpts)
          68 (30.36 % of base) : 7110.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],int):System.Span`1[System.__Canon] (FullOpts)
          76 (27.94 % of base) : 7112.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Index):System.Span`1[System.__Canon] (FullOpts)
         144 (25.90 % of base) : 12332.dasm - System.Numerics.Vector:Max[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         144 (25.90 % of base) : 12334.dasm - System.Numerics.Vector:Min[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.Numerics.Vector`1[System.__Canon] (FullOpts)
         108 (25.00 % of base) : 12256.dasm - System.Numerics.Vector:Dot[System.__Canon](System.Numerics.Vector`1[System.__Canon],System.Numerics.Vector`1[System.__Canon]):System.__Canon (FullOpts)
          64 (21.05 % of base) : 7114.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[],System.Range):System.Span`1[System.__Canon] (FullOpts)
          88 (20.75 % of base) : 8950.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,System.__Canon,System.__Canon,System.__Canon,int):int (FullOpts)
Top method improvements (percentages):
         -44 (-23.91 % of base) : 11769.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -44 (-17.74 % of base) : 11773.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
         -40 (-16.95 % of base) : 6021.dasm - System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
         -20 (-15.15 % of base) : 2072.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly):System.Attribute[] (FullOpts)
         -20 (-15.15 % of base) : 2073.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,ubyte):System.Attribute[] (FullOpts)
         -20 (-15.15 % of base) : 2063.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Module):System.Attribute[] (FullOpts)
         -20 (-15.15 % of base) : 2064.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Module,ubyte):System.Attribute[] (FullOpts)
         -24 (-13.33 % of base) : 3141.dasm - System.RuntimeType+RuntimeTypeCache:get_FunctionPointerReturnAndParameterTypes():System.Type[]:this (FullOpts)
         -20 (-12.82 % of base) : 2046.dasm - System.Attribute:CreateAttributeArrayHelper(System.Type,int):System.Attribute[] (FullOpts)
         -28 (-10.61 % of base) : 408.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
         -20 (-8.47 % of base) : 8908.dasm - System.SpanHelpers:LastIndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
         -24 (-4.51 % of base) : 86.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-3.79 % of base) : 798.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -24 (-3.70 % of base) : 2036.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.EventInfo,System.Type,ubyte):System.Attribute[] (FullOpts)
         -24 (-3.51 % of base) : 2033.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (FullOpts)
          -8 (-3.28 % of base) : 8901.dasm - System.SpanHelpers:IndexOfAnyExcept[System.__Canon](byref,System.__Canon,int):int (FullOpts)
  
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: 2054128 (overridden on cmd)
Total bytes of diff: 2054060 (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 regressions (bytes):
          48 : 3485.dasm (33.33 % of base)
Top file improvements (bytes):
         -52 : 869.dasm (-32.50 % of base)
         -36 : 3483.dasm (-14.75 % of base)
         -24 : 3488.dasm (-4.41 % of base)
          -4 : 1062.dasm (-3.33 % of base)
5 total files with Code Size differences (4 improved, 1 regressed), 14 unchanged.
Top method regressions (bytes):
          48 (33.33 % of base) : 3485.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
         -52 (-32.50 % of base) : 869.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
         -36 (-14.75 % of base) : 3483.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -24 (-4.41 % of base) : 3488.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
          -4 (-3.33 % of base) : 1062.dasm - Xunit.TestFrameworkOptions:GetValue[System.Nullable`1[ubyte]](System.String):System.Nullable`1[ubyte]:this (Tier0)
Top method regressions (percentages):
          48 (33.33 % of base) : 3485.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
         -52 (-32.50 % of base) : 869.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
         -36 (-14.75 % of base) : 3483.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -24 (-4.41 % of base) : 3488.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
          -4 (-3.33 % of base) : 1062.dasm - Xunit.TestFrameworkOptions:GetValue[System.Nullable`1[ubyte]](System.String):System.Nullable`1[ubyte]:this (Tier0)
5 total methods with Code Size differences (4 improved, 1 regressed).
  
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1296204 (overridden on cmd)
Total bytes of diff: 1298996 (overridden on cmd)
Total bytes of delta: 2792 (0.22 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         332 : 3679.dasm (19.76 % of base)
         244 : 4224.dasm (20.40 % of base)
         144 : 69.dasm (45.00 % of base)
         136 : 7167.dasm (47.22 % of base)
         136 : 11323.dasm (24.11 % of base)
         132 : 6642.dasm (17.46 % of base)
         128 : 3161.dasm (35.16 % of base)
          96 : 1919.dasm (24.49 % of base)
          88 : 6455.dasm (12.09 % of base)
          84 : 2226.dasm (32.81 % of base)
          84 : 403.dasm (18.42 % of base)
          76 : 24.dasm (32.20 % of base)
          76 : 3659.dasm (11.38 % of base)
          64 : 10974.dasm (30.19 % of base)
          64 : 6461.dasm (84.21 % of base)
          64 : 11313.dasm (16.67 % of base)
          64 : 5847.dasm (61.54 % of base)
          60 : 5885.dasm (48.39 % of base)
          52 : 11417.dasm (23.64 % of base)
          48 : 1107.dasm (23.53 % of base)
Top file improvements (bytes):
         -32 : 3220.dasm (-9.41 % of base)
         -20 : 2966.dasm (-20.83 % of base)
         -20 : 3254.dasm (-5.49 % of base)
         -16 : 750.dasm (-1.76 % of base)
         -12 : 3571.dasm (-1.90 % of base)
          -4 : 60.dasm (-0.82 % of base)
          -4 : 6939.dasm (-0.97 % of base)
          -4 : 993.dasm (-0.27 % of base)
          -4 : 5952.dasm (-1.18 % of base)
          -4 : 8740.dasm (-1.18 % of base)
          -4 : 255.dasm (-0.68 % of base)
          -4 : 320.dasm (-0.89 % of base)
          -4 : 3322.dasm (-0.29 % of base)
          -4 : 3393.dasm (-0.78 % of base)
          -4 : 341.dasm (-1.67 % of base)
          -4 : 397.dasm (-0.90 % of base)
          -4 : 512.dasm (-0.60 % of base)
45 total files with Code Size differences (17 improved, 28 regressed), 23 unchanged.
Top method regressions (bytes):
         332 (19.76 % of base) : 3679.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         244 (20.40 % of base) : 4224.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
         144 (45.00 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         136 (47.22 % of base) : 7167.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
         136 (24.11 % of base) : 11323.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveLessDerivedMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref) (FullOpts)
         132 (17.46 % of base) : 6642.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
         128 (35.16 % of base) : 3161.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          96 (24.49 % of base) : 1919.dasm - Xunit.ConsoleClient.TransformFactory:Handler_DirectWrite(System.Xml.Linq.XElement,System.String) (FullOpts)
          88 (12.09 % of base) : 6455.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
          84 (32.81 % of base) : 2226.dasm - Roslyn.Utilities.StandardFileSystem:OpenFile(System.String,int,int,int):System.IO.Stream:this (FullOpts)
          84 (18.42 % of base) : 403.dasm - Xunit.ConfigReader_Json:LoadFile(System.String):Xunit.TestAssemblyConfiguration (FullOpts)
          76 (32.20 % of base) : 24.dasm - Internal.Microsoft.Extensions.DependencyModel.FileWrapper:OpenRead(System.String):System.IO.Stream:this (FullOpts)
          76 (11.38 % of base) : 3659.dasm - System.Linq.EnumerableExtensions:SequenceEqual[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],System.Func`3[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],System.Collections.Generic.KeyValuePair`2[System.__Canon,int],ubyte]):ubyte (FullOpts)
          64 (16.67 % of base) : 11313.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
          64 (30.19 % of base) : 10974.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
          64 (61.54 % of base) : 5847.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          64 (84.21 % of base) : 6461.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          60 (48.39 % of base) : 5885.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]] (FullOpts)
          52 (23.64 % of base) : 11417.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:Add[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          48 (6.42 % of base) : 3704.dasm - Microsoft.CodeAnalysis.TextDocumentStates`1[System.__Canon]:UpdateStates[System.ValueTuple`2[System.__Canon,ubyte]](System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,ubyte],System.__Canon],System.ValueTuple`2[System.__Canon,ubyte]):Microsoft.CodeAnalysis.TextDocumentStates`1[System.__Canon]:this (FullOpts)
Top method improvements (bytes):
         -32 (-9.41 % of base) : 3220.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
         -20 (-20.83 % of base) : 2966.dasm - Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
         -20 (-5.49 % of base) : 3254.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
         -16 (-1.76 % of base) : 750.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -12 (-1.90 % of base) : 3571.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
          -4 (-0.68 % of base) : 255.dasm - DictionaryExtensions:ToDictionaryIgnoringDuplicateKeys[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-1.67 % of base) : 341.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
          -4 (-1.18 % of base) : 5952.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
          -4 (-1.18 % of base) : 8740.dasm - Microsoft.Interop.HashCode:SequentialValuesHash[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (FullOpts)
          -4 (-0.78 % of base) : 3393.dasm - Microsoft.VisualStudio.Composition.Utilities:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],int):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.97 % of base) : 6939.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.90 % of base) : 397.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 320.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.27 % of base) : 993.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.29 % of base) : 3322.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.82 % of base) : 60.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.60 % of base) : 512.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
Top method regressions (percentages):
          64 (84.21 % of base) : 6461.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          64 (61.54 % of base) : 5847.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          60 (48.39 % of base) : 5885.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]] (FullOpts)
         136 (47.22 % of base) : 7167.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
         144 (45.00 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          44 (37.93 % of base) : 4724.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         128 (35.16 % of base) : 3161.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          44 (33.33 % of base) : 5882.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
          84 (32.81 % of base) : 2226.dasm - Roslyn.Utilities.StandardFileSystem:OpenFile(System.String,int,int,int):System.IO.Stream:this (FullOpts)
          76 (32.20 % of base) : 24.dasm - Internal.Microsoft.Extensions.DependencyModel.FileWrapper:OpenRead(System.String):System.IO.Stream:this (FullOpts)
          64 (30.19 % of base) : 10974.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
          96 (24.49 % of base) : 1919.dasm - Xunit.ConsoleClient.TransformFactory:Handler_DirectWrite(System.Xml.Linq.XElement,System.String) (FullOpts)
         136 (24.11 % of base) : 11323.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveLessDerivedMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref) (FullOpts)
          52 (23.64 % of base) : 11417.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:Add[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
          32 (23.53 % of base) : 1179.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
          48 (23.53 % of base) : 1107.dasm - Xunit.Sdk.ExceptionAggregator:RunAsync[System.__Canon](System.Func`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)
         244 (20.40 % of base) : 4224.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
         332 (19.76 % of base) : 3679.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          84 (18.42 % of base) : 403.dasm - Xunit.ConfigReader_Json:LoadFile(System.String):Xunit.TestAssemblyConfiguration (FullOpts)
          44 (18.33 % of base) : 10168.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:SelectMany[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.__Canon](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Func`3[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Threading.CancellationToken,System.__Canon]):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
Top method improvements (percentages):
         -20 (-20.83 % of base) : 2966.dasm - Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
         -32 (-9.41 % of base) : 3220.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
         -20 (-5.49 % of base) : 3254.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
         -12 (-1.90 % of base) : 3571.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
         -16 (-1.76 % of base) : 750.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          -4 (-1.67 % of base) : 341.dasm - Interop+Sys+FileDescriptors:.cctor() (FullOpts)
          -4 (-1.18 % of base) : 5952.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
          -4 (-1.18 % of base) : 8740.dasm - Microsoft.Interop.HashCode:SequentialValuesHash[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (FullOpts)
          -4 (-0.97 % of base) : 6939.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.90 % of base) : 397.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 320.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.82 % of base) : 60.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.78 % of base) : 3393.dasm - Microsoft.VisualStudio.Composition.Utilities:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],int):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.68 % of base) : 255.dasm - DictionaryExtensions:ToDictionaryIgnoringDuplicateKeys[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.60 % of base) : 512.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.29 % of base) : 3322.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.27 % of base) : 993.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
  
realworld.run.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2049968 (overridden on cmd)
Total bytes of diff: 2055252 (overridden on cmd)
Total bytes of delta: 5284 (0.26 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         504 : 6963.dasm (51.01 % of base)
         300 : 8039.dasm (30.74 % of base)
         288 : 5887.dasm (16.98 % of base)
         244 : 14832.dasm (20.40 % of base)
         224 : 6640.dasm (49.56 % of base)
         224 : 6616.dasm (49.56 % of base)
         224 : 6637.dasm (50.45 % of base)
         224 : 6627.dasm (49.56 % of base)
         144 : 14089.dasm (43.90 % of base)
         144 : 10117.dasm (16.36 % of base)
         140 : 9815.dasm (12.92 % of base)
         136 : 17642.dasm (47.89 % of base)
         132 : 17062.dasm (17.46 % of base)
         128 : 20545.dasm (28.83 % of base)
         128 : 21093.dasm (24.06 % of base)
         116 : 8276.dasm (16.29 % of base)
         100 : 6638.dasm (29.76 % of base)
          96 : 8815.dasm (5.52 % of base)
          92 : 6635.dasm (26.14 % of base)
          88 : 16753.dasm (12.43 % of base)
Top file improvements (bytes):
         -24 : 86.dasm (-4.51 % of base)
         -20 : 371.dasm (-3.70 % of base)
         -16 : 13698.dasm (-1.76 % of base)
         -12 : 8485.dasm (-1.58 % of base)
          -4 : 12523.dasm (-0.51 % of base)
          -4 : 828.dasm (-0.89 % of base)
          -4 : 13346.dasm (-0.90 % of base)
          -4 : 17362.dasm (-0.97 % of base)
          -4 : 16743.dasm (-1.25 % of base)
          -4 : 827.dasm (-0.82 % of base)
          -4 : 3343.dasm (-0.30 % of base)
42 total files with Code Size differences (11 improved, 31 regressed), 21 unchanged.
Top method regressions (bytes):
         504 (51.01 % of base) : 6963.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         300 (30.74 % of base) : 8039.dasm - FSharp.Compiler.CheckDeclarations+MutRecShapes:expandTyconsWithEnv[System.__Canon,System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         288 (16.98 % of base) : 5887.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         244 (20.40 % of base) : 14832.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
         224 (50.45 % of base) : 6637.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6640.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6627.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6616.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         144 (16.36 % of base) : 10117.dasm - Internal.Utilities.Collections.Tagged.MapTreeModule:add[System.__Canon,System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,System.__Canon,Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon]):Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon] (FullOpts)
         144 (43.90 % of base) : 14089.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
         140 (12.92 % of base) : 9815.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:balance[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
         136 (47.89 % of base) : 17642.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
         132 (17.46 % of base) : 17062.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
         128 (28.83 % of base) : 20545.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):int:this (FullOpts)
         128 (24.06 % of base) : 21093.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
         116 (16.29 % of base) : 8276.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:add[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
         100 (29.76 % of base) : 6638.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_unop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          96 (5.52 % of base) : 8815.dasm - FSharp.Compiler.NameResolution:AddResults[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          92 (26.14 % of base) : 6635.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_hash_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          88 (12.43 % of base) : 16753.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
Top method improvements (bytes):
         -24 (-4.51 % of base) : 86.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-3.70 % of base) : 371.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -16 (-1.76 % of base) : 13698.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -12 (-1.58 % of base) : 8485.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
          -4 (-1.25 % of base) : 16743.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
          -4 (-0.97 % of base) : 17362.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.90 % of base) : 13346.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 828.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.30 % of base) : 3343.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.82 % of base) : 827.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.51 % of base) : 12523.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
Top method regressions (percentages):
         504 (51.01 % of base) : 6963.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         224 (50.45 % of base) : 6637.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6640.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6627.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 6616.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         136 (47.89 % of base) : 17642.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
         144 (43.90 % of base) : 14089.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
          56 (36.84 % of base) : 11760.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
          48 (32.43 % of base) : 9161.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          44 (32.35 % of base) : 10694.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
         300 (30.74 % of base) : 8039.dasm - FSharp.Compiler.CheckDeclarations+MutRecShapes:expandTyconsWithEnv[System.__Canon,System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          56 (29.79 % of base) : 6564.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
         100 (29.76 % of base) : 6638.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_unop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         128 (28.83 % of base) : 20545.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMember[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):int:this (FullOpts)
          92 (26.14 % of base) : 6635.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_hash_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         128 (24.06 % of base) : 21093.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          84 (23.86 % of base) : 8746.dasm - FSharp.Compiler.NameResolution:OneResult[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          76 (23.75 % of base) : 4627.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          40 (21.28 % of base) : 2153.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         244 (20.40 % of base) : 14832.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
Top method improvements (percentages):
         -24 (-4.51 % of base) : 86.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-3.70 % of base) : 371.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -16 (-1.76 % of base) : 13698.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -12 (-1.58 % of base) : 8485.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
          -4 (-1.25 % of base) : 16743.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
          -4 (-0.97 % of base) : 17362.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.90 % of base) : 13346.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 828.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.82 % of base) : 827.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.51 % of base) : 12523.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
          -4 (-0.30 % of base) : 3343.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
  
  
windows arm64
Diffs are based on 95,065 contexts (36,507 MinOpts, 58,558 FullOpts).
MISSED contexts: base: 0 (0.00%), diff: 54,513 (35.50%)
Overall (+10,872 bytes)
| Collection | 
Base size (bytes) | 
Diff size (bytes) | 
| benchmarks.run.windows.arm64.checked.mch | 
1,133,696 | 
+836 | 
| benchmarks.run_pgo.windows.arm64.checked.mch | 
2,273,500 | 
-680 | 
| benchmarks.run_tiered.windows.arm64.checked.mch | 
2,189,152 | 
+216 | 
| coreclr_tests.run.windows.arm64.checked.mch | 
275,388 | 
+20 | 
| libraries.pmi.windows.arm64.checked.mch | 
1,249,004 | 
+2,720 | 
| libraries_tests.run.windows.arm64.Release.mch | 
2,089,172 | 
+328 | 
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 
1,240,428 | 
+3,080 | 
| realworld.run.windows.arm64.checked.mch | 
1,943,440 | 
+4,352 | 
  
MinOpts (-248 bytes)
| Collection | 
Base size (bytes) | 
Diff size (bytes) | 
| benchmarks.run_pgo.windows.arm64.checked.mch | 
1,757,772 | 
-96 | 
| benchmarks.run_tiered.windows.arm64.checked.mch | 
1,926,004 | 
-96 | 
| libraries_tests.run.windows.arm64.Release.mch | 
2,005,008 | 
-56 | 
  
FullOpts (+11,120 bytes)
| Collection | 
Base size (bytes) | 
Diff size (bytes) | 
| benchmarks.run.windows.arm64.checked.mch | 
1,133,548 | 
+836 | 
| benchmarks.run_pgo.windows.arm64.checked.mch | 
515,728 | 
-584 | 
| benchmarks.run_tiered.windows.arm64.checked.mch | 
263,148 | 
+312 | 
| coreclr_tests.run.windows.arm64.checked.mch | 
275,388 | 
+20 | 
| libraries.pmi.windows.arm64.checked.mch | 
1,249,004 | 
+2,720 | 
| libraries_tests.run.windows.arm64.Release.mch | 
84,164 | 
+384 | 
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 
1,240,428 | 
+3,080 | 
| realworld.run.windows.arm64.checked.mch | 
1,943,340 | 
+4,352 | 
  
Example diffs
benchmarks.run.windows.arm64.checked.mch
-36 (-21.43%) : 1212.dasm - Microsoft.Win32.SafeHandles.SafeChainEngineHandle:.cctor() (FullOpts)
@@ -9,88 +9,75 @@
 ; Final local variable assignments
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V01 tmp1         [V01,T00] (  7, 14   )     ref  ->   x0         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeChainEngineHandle>
-;  V02 tmp2         [V02,T01] (  7, 14   )     ref  ->   x0         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeChainEngineHandle>
-;  V03 cse0         [V03,T02] (  3,  3   )    long  ->  x19         "CSE - aggressive"
-;  V04 cse1         [V04,T03] (  3,  3   )    long  ->  x20         "CSE - aggressive"
+;  V01 tmp1         [V01,T00] (  7, 14   )     ref  ->  x15         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeChainEngineHandle>
+;  V02 tmp2         [V02,T01] (  5, 10   )     ref  ->   x0         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeChainEngineHandle>
+;  V03 cse0         [V03,T02] (  3,  3   )     ref  ->   x0         "CSE - aggressive"
+;  V04 cse1         [V04,T03] (  3,  3   )   byref  ->   x1         "CSE - aggressive"
+;  V05 cse2         [V05,T04] (  3,  3   )   byref  ->   x2         "CSE - aggressive"
+;  V06 cse3         [V06,T05] (  3,  3   )    long  ->   x3         "CSE - aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M11709_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x20]!
-            stp     x19, x20, [sp, #0x10]
+            stp     fp, lr, [sp, #-0x10]!
             mov     fp, sp
-                       ;; size=12 bbWeight=1 PerfScore 2.50
+                      ;; size=8 bbWeight=1 PerfScore 1.50
 G_M11709_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            movz    x19, #0xD1FFAB1E
-            movk    x19, #0xD1FFAB1E LSL #16
-            movk    x19, #0xD1FFAB1E LSL #32
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_DBLROUND
             ; gcrRegs +[x0]
-            str     xzr, [x0, #0x10]
-            add     x14, x0, #24
-            ; byrRegs +[x14]
-            mov     w15, #4
-            stlr    w15, [x14]
+            mov     x15, x0
+            ; gcrRegs +[x15]
+            str     xzr, [x15, #0x10]
+            add     x1, x15, #24
+            ; byrRegs +[x1]
+            mov     w14, #4
+            stlr    w14, [x1]
+            mov     w14, #1
+            strb    w14, [x15, #0x1C]
+            add     x2, x15, #29
+            ; byrRegs +[x2]
+            stlrb   w14, [x2]
+            str     x14, [x15, #0x10]
+            movz    x3, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            movk    x3, #0xD1FFAB1E LSL #16
+            movk    x3, #0xD1FFAB1E LSL #32
+            mov     x14, x3
+            bl      CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[x15]
+            str     xzr, [x0, #0x10]
+            mov     w14, #4
+            stlr    w14, [x1]
             mov     w14, #1
-            ; byrRegs -[x14]
             strb    w14, [x0, #0x1C]
-            add     x14, x0, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     x15, [x0, #0x10]
-            movz    x20, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
-            movk    x20, #0xD1FFAB1E LSL #16
-            movk    x20, #0xD1FFAB1E LSL #32
-            mov     x14, x20
-            ; byrRegs -[x14]
+            stlrb   w14, [x2]
+            str     xzr, [x0, #0x10]
+            add     x14, x3, #8
             mov     x15, x0
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
-            ; gcrRegs +[x0]
-            str     xzr, [x0, #0x10]
-            add     x14, x0, #24
-            ; byrRegs +[x14]
-            mov     w15, #4
-            stlr    w15, [x14]
-            mov     w14, #1
-            ; byrRegs -[x14]
-            strb    w14, [x0, #0x1C]
-            add     x14, x0, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     xzr, [x0, #0x10]
-            add     x14, x20, #8
-            ; byrRegs -[x14]
-            mov     x15, x0
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15]
-                       ;; size=144 bbWeight=1 PerfScore 25.00
+            ; byrRegs -[x1-x2]
+                       ;; size=116 bbWeight=1 PerfScore 21.00
 G_M11709_IG03:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x10]
-            ldp     fp, lr, [sp], #0x20
+            ldp     fp, lr, [sp], #0x10
             ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
+                      ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 168, prolog size 12, PerfScore 30.50, instruction count 42, allocated bytes for code 168 (MethodHash=991dd242) for method Microsoft.Win32.SafeHandles.SafeChainEngineHandle:.cctor() (FullOpts)
+; Total bytes of code 132, prolog size 8, PerfScore 24.50, instruction count 33, allocated bytes for code 132 (MethodHash=991dd242) for method Microsoft.Win32.SafeHandles.SafeChainEngineHandle:.cctor() (FullOpts)
 ; ============================================================
 
 Unwind Info:
   >> Start offset   : 0x000000 (not in unwind data)
   >>   End offset   : 0xd1ffab1e (not in unwind data)
-  Code Words        : 2
+  Code Words        : 1
   Epilog Count      : 1
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 42 (0x0002a) Actual length = 168 (0x0000a8)
+  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -98,10 +85,7 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    C8 02       save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
-    83          save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
-    E4          end
-    E4          end
+    81          save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
     E4          end
     E4          end
 
  
-48 (-10.53%) : 4392.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute
@@ -8,22 +8,18 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Type>
-;  V01 loc0         [V01,T04] (  5,  4   )     ref  ->  x20         class-hnd single-def <System.Collections.Hashtable>
-;  V02 loc1         [V02,T02] (  7,  5   )     ref  ->  x22         class-hnd <System.Attribute[]>
-;  V03 loc2         [V03,T12] (  4,  1   )     ref  ->  [fp+0x18]  class-hnd exact EH-live spill-single-def <System.Object>
+;  V00 arg0         [V00,T00] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Type>
+;  V01 loc0         [V01,T02] (  5,  4   )     ref  ->  x20         class-hnd single-def <System.Collections.Hashtable>
+;  V02 loc1         [V02,T01] (  7,  5   )     ref  ->  x22         class-hnd <System.Attribute[]>
+;  V03 loc2         [V03,T08] (  4,  1   )     ref  ->  [fp+0x18]  class-hnd exact EH-live spill-single-def <System.Object>
 ;  V04 loc3         [V04    ] (  6,  2.50)   ubyte  ->  [fp+0x20]  do-not-enreg[X] addr-exposed ld-addr-op
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T03] (  3,  4.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T10] (  3,  1.25)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T00] (  5,  6.75)     ref  ->  x22         class-hnd "spilling QMark2" <System.Attribute[]>
-;  V09 tmp4         [V09,T07] (  3,  2.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V10 tmp5         [V10,T11] (  3,  1.25)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V11 tmp6         [V11,T05] (  5,  3.75)     ref  ->  x22         class-hnd "spilling QMark2" <System.Attribute[]>
-;  V12 tmp7         [V12,T08] (  2,  2   )   ubyte  ->   x0         "Inlining Arg"
-;  V13 PSPSym       [V13,T13] (  1,  1   )    long  ->  [fp+0x28]  do-not-enreg[V] "PSPSym"
-;  V14 cse0         [V14,T06] (  4,  3   )    long  ->  x21         "CSE - aggressive"
-;  V15 cse1         [V15,T09] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V06 tmp1         [V06,T06] (  2,  2   )   ubyte  ->   x0         "Inlining Arg"
+;  V07 tmp2         [V07,T03] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
+;  V08 tmp3         [V08,T05] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V09 PSPSym       [V09,T09] (  1,  1   )    long  ->  [fp+0x28]  do-not-enreg[V] "PSPSym"
+;  V10 cse0         [V10,T04] (  4,  3   )    long  ->  x21         "CSE - aggressive"
+;  V11 cse1         [V11,T07] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
 ;
 ; Lcl frame size = 32
 
@@ -33,7 +29,7 @@ G_M8794_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x21, x22, [sp, #0x40]
             mov     fp, sp
             add     x1, sp, #80
-            str     x1, [fp, #0x28]   // [V13 PSPSym]
+            str     x1, [fp, #0x28]    // [V09 PSPSym]
             mov     x19, x0
             ; gcrRegs +[x19]
                        ;; size=28 bbWeight=1 PerfScore 5.50
@@ -57,44 +53,29 @@ G_M8794_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x22, x1
-            ; gcrRegs +[x22]
-            cbz     x22, G_M8794_IG05
-                       ;; size=56 bbWeight=1 PerfScore 18.50
-G_M8794_IG03:        ; bbWeight=0.25, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            ldr     x0, [x22]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x0, x2
-            beq     G_M8794_IG05
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M8794_IG04:        ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x22]
-            mov     x0, x2
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             mov     x22, x0
             ; gcrRegs +[x22]
-                     ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M8794_IG05:        ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbz     x22, G_M8794_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M8794_IG06:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x19-x20]
+            cbz     x22, G_M8794_IG05
+                       ;; size=72 bbWeight=1 PerfScore 21.00
+G_M8794_IG03:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x19-x20]
             mov     x0, x22
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=1 PerfScore 0.50
-G_M8794_IG07:        ; bbWeight=1, epilog, nogc, extend
+G_M8794_IG04:        ; bbWeight=1, epilog, nogc, extend
             ldp     x21, x22, [sp, #0x40]
             ldp     x19, x20, [sp, #0x30]
             ldp     fp, lr, [sp], #0x50
             ret     lr
                        ;; size=16 bbWeight=1 PerfScore 4.00
-G_M8794_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+G_M8794_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0 x22] +[x19-x20]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -105,11 +86,11 @@ G_M8794_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=1800
             ; GC ptr vars +{V03}
             str     wzr, [fp, #0x20]   // [V04 loc3]
                        ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M8794_IG09:        ; bbWeight=0.50, gcVars=0000000000001000 {V03}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8794_IG06:        ; bbWeight=0.50, gcVars=0000000000000100 {V03}, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
             ldrb    w1, [fp, #0x20]    // [V04 loc3]
-            cbz     w1, G_M8794_IG11
+            cbz     w1, G_M8794_IG08
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M8794_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8794_IG07:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x19-x20]
             movz    x1, #0xD1FFAB1E      // code for System.Threading.Monitor:ThrowLockTakenException()
             movk    x1, #0xD1FFAB1E LSL #16
@@ -119,14 +100,14 @@ G_M8794_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcr arg pop 0
             brk_windows #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M8794_IG11:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M8794_IG08:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0 x19-x20]
             add     x1, fp, #32    // [V04 loc3]
             bl      <unknown method>
             ; gcrRegs -[x0]
             ; gcr arg pop 0
             ldrb    w0, [fp, #0x20]    // [V04 loc3]
-            cbnz    w0, G_M8794_IG12
+            cbnz    w0, G_M8794_IG09
             movz    x1, #8
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -140,7 +121,7 @@ G_M8794_IG11:        ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=52 bbWeight=0.50 PerfScore 6.00
-G_M8794_IG12:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M8794_IG09:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     x0, x20
             ; gcrRegs +[x0]
             mov     x1, x19
@@ -151,33 +132,17 @@ G_M8794_IG12:        ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x22, x1
-            ; gcrRegs +[x22]
-            cbz     x22, G_M8794_IG15
-                       ;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M8794_IG13:        ; bbWeight=0.25, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            ldr     x0, [x22]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x0, x2
-            beq     G_M8794_IG15
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M8794_IG14:        ; bbWeight=0.12, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x22]
-            mov     x0, x2
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             mov     x22, x0
             ; gcrRegs +[x22]
-                     ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M8794_IG15:        ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
-            cbnz    x22, G_M8794_IG16
+            cbnz    x22, G_M8794_IG10
             mov     x0, x19
-            ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -200,45 +165,45 @@ G_M8794_IG15:        ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=
             blr     x3
             ; gcrRegs -[x0-x2 x19-x20]
             ; gcr arg pop 0
-                      ;; size=68 bbWeight=0.50 PerfScore 7.50
-G_M8794_IG16:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+                      ;; size=108 bbWeight=0.50 PerfScore 11.75
+G_M8794_IG10:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ldrb    w0, [fp, #0x20] // [V04 loc3]
-            cbz     w0, G_M8794_IG06
+            cbz     w0, G_M8794_IG03
             ldr     x0, [fp, #0x18]    // [V03 loc2]
             ; gcrRegs +[x0]
             ; GC ptr vars -{V03}
             bl      <unknown method>
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            b       G_M8794_IG06
+            b       G_M8794_IG03
                         ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M8794_IG17:        ; bbWeight=0, gcVars=0000000000001000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M8794_IG11:        ; bbWeight=0, gcVars=0000000000000100 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
             ; gcrRegs -[x22]
-            ; GC ptr vars +{V03 V12}
+            ; GC ptr vars +{V03 V08}
             stp     fp, lr, [sp, #-0x40]!
             stp     x19, x20, [sp, #0x20]
             stp     x21, x22, [sp, #0x30]
             add     x3, fp, #80
             str     x3, [sp, #0x18]
                        ;; size=20 bbWeight=0 PerfScore 0.00
-G_M8794_IG18:        ; bbWeight=0, gcVars=0000000000001000 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M8794_IG12:        ; bbWeight=0, gcVars=0000000000000100 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
             ldrb    w0, [fp, #0x20] // [V04 loc3]
-            cbz     w0, G_M8794_IG19
+            cbz     w0, G_M8794_IG13
             ldr     x0, [fp, #0x18]    // [V03 loc2]
             ; gcrRegs +[x0]
-            ; GC ptr vars -{V03 V12}
+            ; GC ptr vars -{V03 V08}
             bl      <unknown method>
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M8794_IG19:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M8794_IG13:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
             ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 456, prolog size 28, PerfScore 58.25, instruction count 114, allocated bytes for code 456 (MethodHash=544edda5) for method System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
+; Total bytes of code 408, prolog size 28, PerfScore 57.00, instruction count 102, allocated bytes for code 408 (MethodHash=544edda5) for method System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -249,7 +214,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 101 (0x00065) Actual length = 404 (0x000194)
+  Function Length   : 89 (0x00059) Actual length = 356 (0x000164)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -286,4 +251,4 @@ Unwind Info:
 
 *************** EH table for System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[]
 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M8794_IG09..G_M8794_IG16) handled by [G_M8794_IG17..END) (fault)
+EH#0: try [G_M8794_IG06..G_M8794_IG10) handled by [G_M8794_IG11..END) (fault)
  
-20 (-5.49%) : 7000.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
@@ -7,42 +7,40 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  4,  4   )     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
+;  V00 this         [V00,T00] (  7,  5.50)     ref  ->  x19         this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.__Canon]>
 ;  V01 arg1         [V01,T02] (  4,  3   )   ubyte  ->  x20         single-def
-;  V02 loc0         [V02,T12] (  3,  2.50)     ref  ->  x23         class-hnd single-def <<unknown class>>
+;  V02 loc0         [V02,T11] (  3,  2.50)     ref  ->  x22         class-hnd single-def <<unknown class>>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V06 tmp3         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp4         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp5         [V08,T08] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V08 tmp5         [V08,T07] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;  V09 tmp6         [V09,T05] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V10 tmp7         [V10,T15] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V11 tmp8         [V11,T16] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V12 cse0         [V12,T07] (  5,  3.50)     ref  ->  x22         "CSE - aggressive"
-;  V13 cse1         [V13,T06] (  8,  3.80)    long  ->  x21         "CSE - aggressive"
-;  V14 rat0         [V14,T03] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V15 rat1         [V15,T04] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V16 rat2         [V16,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V17 rat3         [V17,T09] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V18 rat4         [V18,T13] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V19 rat5         [V19,T10] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V20 rat6         [V20,T14] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V21 rat7         [V21,T11] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V10 tmp7         [V10,T14] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V11 tmp8         [V11,T15] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V12 cse0         [V12,T06] (  8,  3.80)    long  ->  x21         "CSE - aggressive"
+;  V13 rat0         [V13,T03] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V14 rat1         [V14,T04] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V15 rat2         [V15,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V16 rat3         [V16,T08] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V17 rat4         [V17,T12] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V18 rat5         [V18,T09] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat6         [V19,T13] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V20 rat7         [V20,T10] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M18513_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x18]
-            stp     x21, x22, [sp, #0x28]
-            str     x23, [sp, #0x38]
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
+            str     x0, [fp, #0x18]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     w20, w1
-                      ;; size=32 bbWeight=1 PerfScore 6.50
+                      ;; size=28 bbWeight=1 PerfScore 5.50
 G_M18513_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x21, [x19]
             mov     x0, x21
@@ -59,56 +57,53 @@ G_M18513_IG04:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.20 PerfScore 0.50
 G_M18513_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x19, #0x08]
-            ; gcrRegs +[x22]
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            mov     x23, x0
-            ; gcrRegs +[x23]
-            cbz     x23, G_M18513_IG11
-                       ;; size=20 bbWeight=1 PerfScore 6.00
-G_M18513_IG06:        ; bbWeight=0.50, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x22]
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            cbz     x22, G_M18513_IG11
+                       ;; size=16 bbWeight=1 PerfScore 5.50
+G_M18513_IG06:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x11, [x0, #0x40]
             cbz     x11, G_M18513_IG08
                        ;; size=16 bbWeight=0.50 PerfScore 5.00
-G_M18513_IG07:        ; bbWeight=0.40, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG07:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             b       G_M18513_IG09
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG08:        ; bbWeight=0.10, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG08:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0.10 PerfScore 0.35
-G_M18513_IG09:        ; bbWeight=0.50, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
+G_M18513_IG09:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
             uxtb    w1, w20
-            mov     x0, x23
+            mov     x0, x22
             ; gcrRegs +[x0]
             ldr     x2, [x11]
                        ;; size=12 bbWeight=0.50 PerfScore 2.00
 G_M18513_IG10:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[x0 x23] +[x22]
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[x0 x22]
             tst     w20, #255
             beq     G_M18513_IG16
             ldr     x0, [x21, #0x38]
@@ -116,79 +111,77 @@ G_M18513_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480
             ldr     x0, [x0, #0x38]
             cbz     x0, G_M18513_IG13
                        ;; size=24 bbWeight=0.50 PerfScore 5.75
-G_M18513_IG12:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG12:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M18513_IG14
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG13:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG13:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M18513_IG14:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            mov     x1, x22
+G_M18513_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG16
-            mov     x1, x22
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
             cbnz    x0, G_M18513_IG16
             movn    w0, #0
             ; gcrRegs -[x0]
-                      ;; size=40 bbWeight=0.50 PerfScore 3.50
+                       ;; size=40 bbWeight=0.50 PerfScore 6.00
 G_M18513_IG15:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M18513_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, gcvars, byref, isz
+                     ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M18513_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x0, [x0, #0x30]
             cbz     x0, G_M18513_IG18
                        ;; size=16 bbWeight=0.50 PerfScore 5.00
-G_M18513_IG17:        ; bbWeight=0.40, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG17:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M18513_IG19
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M18513_IG18:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+G_M18513_IG18:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x0, x21
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
             ; gcr arg pop 0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M18513_IG19:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x1, x22
+G_M18513_IG19:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ldr     x1, [x19, #0x08]
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             ldr     x2, [x2]
-                     ;; size=20 bbWeight=0.50 PerfScore 2.50
+                       ;; size=20 bbWeight=0.50 PerfScore 3.75
 G_M18513_IG20:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=20 bbWeight=0.50 PerfScore 3.00
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 364, prolog size 32, PerfScore 62.60, instruction count 91, allocated bytes for code 364 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
+; Total bytes of code 344, prolog size 28, PerfScore 61.85, instruction count 86, allocated bytes for code 344 (MethodHash=4000b7ae) for method System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -199,7 +192,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 91 (0x0005b) Actual length = 364 (0x00016c)
+  Function Length   : 86 (0x00056) Actual length = 344 (0x000158)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
...
  
+44 (+15.28%) : 3973.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon]](System.Collections.Generic.List1System.Collections.Generic.KeyValuePair2[System.__Canon,System.__Canon]]):System.Span1[System.Collections.Generic.KeyValuePair`2[System.Canon,System.Canon]
@@ -8,24 +8,27 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  3.60)    long  ->  x20         single-def
+;  V00 TypeCtx      [V00,T01] (  7,  4.28)    long  ->  x20         single-def
 ;  V01 arg0         [V01,T00] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
 ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op <System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
-;  V03 loc1         [V03,T06] (  4,  2   )     int  ->  x21        
-;  V04 loc2         [V04,T05] (  4,  2   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
+;  V03 loc1         [V03,T08] (  4,  2   )     int  ->  x21        
+;  V04 loc2         [V04,T07] (  4,  2   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T07] (  3,  2   )    long  ->   x2         "spilling helperCall"
+;  V06 tmp1         [V06,T09] (  3,  2   )    long  ->   x2         "spilling helperCall"
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V09 tmp4         [V09    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V10 tmp5         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V12 tmp7         [V12,T08] (  2,  2   )   byref  ->  x19         single-def "Inlining Arg"
-;  V13 tmp8         [V13,T03] (  3,  2.50)   byref  ->   x0         "field V02._reference (fldOffset=0x0)" P-INDEP
-;  V14 tmp9         [V14,T04] (  3,  2.50)     int  ->   x1         "field V02._length (fldOffset=0x8)" P-INDEP
-;  V15 tmp10        [V15,T09] (  2,  1   )   byref  ->   x0         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-;  V16 tmp11        [V16,T10] (  2,  1   )     int  ->   x1         "field V07._length (fldOffset=0x8)" P-INDEP
+;  V12 tmp7         [V12,T10] (  2,  2   )   byref  ->  x19         single-def "Inlining Arg"
+;  V13 tmp8         [V13,T04] (  3,  2.50)   byref  ->   x0         "field V02._reference (fldOffset=0x0)" P-INDEP
+;  V14 tmp9         [V14,T05] (  3,  2.50)     int  ->   x1         "field V02._length (fldOffset=0x8)" P-INDEP
+;  V15 tmp10        [V15,T11] (  2,  1   )   byref  ->   x0         single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V16 tmp11        [V16,T12] (  2,  1   )     int  ->   x1         "field V07._length (fldOffset=0x8)" P-INDEP
 ;  V17 rat0         [V17,T02] (  3,  2.80)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;* V18 rat1         [V18,T13] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V19 rat2         [V19,T03] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V20 rat3         [V20,T06] (  2,  1.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
@@ -43,7 +46,7 @@ G_M35975_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             mov     x0, xzr
             ; byrRegs +[x0]
             mov     w1, wzr
-            cbz     x19, G_M35975_IG09
+            cbz     x19, G_M35975_IG12
                         ;; size=12 bbWeight=1 PerfScore 2.00
 G_M35975_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[x0]
@@ -66,7 +69,7 @@ G_M35975_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
 G_M35975_IG04:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
             ldr     w0, [x22, #0x08]
             cmp     w0, w21
-            blo     G_M35975_IG10
+            blo     G_M35975_IG13
             ldr     x0, [x20, #0x38]
             ldr     x2, [x0, #0x10]
             cbz     x2, G_M35975_IG06
@@ -79,7 +82,7 @@ G_M35975_IG06:        ; bbWeight=0.10, gcrefRegs=480000 {x19 x22}, byrefRegs=000
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x2, x0
                        ;; size=24 bbWeight=0.10 PerfScore 0.35
 G_M35975_IG07:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
@@ -102,7 +105,24 @@ G_M35975_IG07:        ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=000
             blr     x2
             ; gcrRegs -[x19]
                        ;; size=60 bbWeight=0.50 PerfScore 8.00
-G_M35975_IG08:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M35975_IG08:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x20, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M35975_IG10
+                       ;; size=16 bbWeight=0.50 PerfScore 3.75
+G_M35975_IG09:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M35975_IG11
+                       ;; size=8 bbWeight=0.40 PerfScore 1.60
+G_M35975_IG10:        ; bbWeight=0.18, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x20
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.18 PerfScore 0.54
+G_M35975_IG11:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
             add     x19, x22, #16
             ; byrRegs +[x19]
             cmp     w21, #0
@@ -117,14 +137,14 @@ G_M35975_IG08:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
             ; byrRegs +[x0]
             sxtw    w1, w21
                        ;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M35975_IG09:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, epilog, nogc
+G_M35975_IG12:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, epilog, nogc
             ; byrRegs -[x19]
             ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x40
             ret     lr
                        ;; size=16 bbWeight=1 PerfScore 4.00
-G_M35975_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M35975_IG13:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; byrRegs -[x0]
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported()
             movk    x0, #0xD1FFAB1E LSL #16
@@ -134,7 +154,7 @@ G_M35975_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_windows #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 288, prolog size 20, PerfScore 37.75, instruction count 72, allocated bytes for code 288 (MethodHash=77aa7378) for method System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
+; Total bytes of code 332, prolog size 20, PerfScore 43.64, instruction count 83, allocated bytes for code 332 (MethodHash=77aa7378) for method System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -145,7 +165,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 72 (0x00048) Actual length = 288 (0x000120)
+  Function Length   : 83 (0x00053) Actual length = 332 (0x00014c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+40 (+15.38%) : 1375.dasm - System.Array:IndexOfSystem.__Canon:int (FullOpts)
@@ -8,11 +8,11 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T02] (  5,  4.36)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )     ref  ->  x19         class-hnd single-def <System.__Canon[]>
-;  V02 arg1         [V02,T06] (  3,  3   )     ref  ->  x22         ld-addr-op class-hnd single-def <System.__Canon>
-;  V03 arg2         [V03,T01] (  5,  5   )     int  ->  x20         single-def
-;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x21         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )     ref  ->  x20         class-hnd single-def <System.__Canon[]>
+;  V02 arg1         [V02,T07] (  3,  3   )     ref  ->  x23         ld-addr-op class-hnd single-def <System.__Canon>
+;  V03 arg2         [V03,T02] (  5,  5   )     int  ->  x21         single-def
+;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x22         single-def
 ;* V05 loc0         [V05    ] (  0,  0   )     int  ->  zero-ref   
 ;* V06 loc1         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;* V07 loc2         [V07    ] (  0,  0   )     int  ->  zero-ref   
@@ -24,80 +24,96 @@
 ;* V13 tmp4         [V13    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V15 tmp6         [V15,T04] (  3,  6   )     ref  ->   x0         single-def "argument with side effect"
-;  V16 cse0         [V16,T09] (  3,  3   )     int  ->   x1         "CSE - aggressive"
-;  V17 rat0         [V17,T08] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V18 rat1         [V18,T05] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V19 rat2         [V19,T07] (  3,  4.48)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V16 cse0         [V16,T10] (  3,  3   )     int  ->   x0         "CSE - aggressive"
+;* V17 rat0         [V17,T11] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V18 rat1         [V18,T05] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat2         [V19,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat3         [V20,T06] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V21 rat4         [V21,T08] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M13831_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x20]
-            stp     x21, x22, [sp, #0x30]
+            stp     x19, x20, [sp, #0x18]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x19, x1
-            ; gcrRegs +[x19]
-            mov     x22, x2
-            ; gcrRegs +[x22]
-            mov     w20, w3
-            mov     w21, w4
-                       ;; size=36 bbWeight=1 PerfScore 6.50
-G_M13831_IG02:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M13831_IG08
-            ldr     w1, [x19, #0x08]
-            cmp     w1, w20
-            blo     G_M13831_IG09
-            sub     w1, w1, w20
-            cmp     w1, w21
-            blo     G_M13831_IG10
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M13831_IG05
-                       ;; size=44 bbWeight=1 PerfScore 15.00
-G_M13831_IG03:        ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M13831_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M13831_IG04:        ; bbWeight=0.64, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            b       G_M13831_IG06
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M13831_IG05:        ; bbWeight=0.36, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     x23, x2
+            ; gcrRegs +[x23]
+            mov     w21, w3
+            mov     w22, w4
+                       ;; size=44 bbWeight=1 PerfScore 8.00
+G_M13831_IG02:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M13831_IG10
+            ldr     w0, [x20, #0x08]
+            cmp     w0, w21
+            blo     G_M13831_IG11
+            sub     w0, w0, w21
+            cmp     w0, w22
+            blo     G_M13831_IG12
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M13831_IG04
+                       ;; size=40 bbWeight=1 PerfScore 14.50
+G_M13831_IG03:        ; bbWeight=0.20, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x1, x0
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M13831_IG04:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M13831_IG07
+                       ;; size=16 bbWeight=1 PerfScore 7.50
+G_M13831_IG05:        ; bbWeight=0.80, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M13831_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M13831_IG06:        ; bbWeight=0.64, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            b       G_M13831_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M13831_IG07:        ; bbWeight=0.36, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M13831_IG06:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x1
+G_M13831_IG08:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E      // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs +[x0]
-            mov     x1, x19
+            mov     x1, x20
             ; gcrRegs +[x1]
-            mov     x2, x22
+            mov     x2, x23
             ; gcrRegs +[x2]
-            mov     w3, w20
-            mov     w4, w21
+            mov     w3, w21
+            mov     w4, w22
             ldr     x5, [x0]
             ldr     x5, [x5, #0x50]
             ldr     x5, [x5]
             blr     x5
-            ; gcrRegs -[x0-x2 x19 x22]
-                       ;; size=56 bbWeight=1 PerfScore 18.00
-G_M13831_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
+            ; gcrRegs -[x0-x2 x20 x23]
+                       ;; size=52 bbWeight=1 PerfScore 17.50
+G_M13831_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 4.00
-G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                      ;; size=20 bbWeight=1 PerfScore 6.00
+G_M13831_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             mov     w0, #2
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -106,7 +122,7 @@ G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             blr     x1
             brk_windows #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_IndexMustBeLessOrEqual()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -114,7 +130,7 @@ G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             brk_windows #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -123,7 +139,7 @@ G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 260, prolog size 20, PerfScore 48.42, instruction count 65, allocated bytes for code 260 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
+; Total bytes of code 300, prolog size 24, PerfScore 59.02, instruction count 75, allocated bytes for code 300 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +150,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 65 (0x00041) Actual length = 260 (0x000104)
+  Function Length   : 75 (0x0004b) Actual length = 300 (0x00012c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,10 +158,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
-    E4          end
-    E4          end
 
  
+40 (+20.83%) : 6331.dasm - System.Array:SortSystem.__Canon (FullOpts)
@@ -8,86 +8,102 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  4.36)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )     ref  ->   x1         class-hnd single-def <System.__Canon[]>
-;  V02 arg1         [V02,T02] (  4,  4   )     ref  ->  x19         class-hnd single-def <System.Comparison`1[System.__Canon]>
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )     ref  ->  x20         class-hnd single-def <System.__Canon[]>
+;  V02 arg1         [V02,T02] (  4,  4   )     ref  ->  x21         class-hnd single-def <System.Comparison`1[System.__Canon]>
 ;* V03 loc0         [V03    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[System.__Canon]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.__Canon]>
 ;* V06 tmp2         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp3         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp4         [V08,T07] (  2,  4   )     int  ->  x21         "Inlining Arg"
-;  V09 tmp5         [V09,T06] (  2,  4   )   byref  ->  x20         single-def "Inlining Arg"
+;  V08 tmp4         [V08,T08] (  2,  4   )     int  ->  x20         "Inlining Arg"
+;  V09 tmp5         [V09,T07] (  2,  4   )   byref  ->  x22         single-def "Inlining Arg"
 ;* V10 tmp6         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp7         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp8         [V12    ] (  0,  0   )   byref  ->  zero-ref    "field V03._reference (fldOffset=0x0)" P-INDEP
 ;* V13 tmp9         [V13    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0x8)" P-INDEP
-;  V14 tmp10        [V14,T09] (  2,  2   )   byref  ->  x20         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;  V15 tmp11        [V15,T10] (  2,  2   )     int  ->  x21         "field V05._length (fldOffset=0x8)" P-INDEP
-;  V16 tmp12        [V16,T08] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V17 rat0         [V17,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V18 rat1         [V18,T03] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V19 rat2         [V19,T04] (  3,  4.48)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V14 tmp10        [V14,T10] (  2,  2   )   byref  ->  x22         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;  V15 tmp11        [V15,T11] (  2,  2   )     int  ->  x20         "field V05._length (fldOffset=0x8)" P-INDEP
+;  V16 tmp12        [V16,T09] (  2,  4   )    long  ->   x0         "argument with side effect"
+;* V17 rat0         [V17,T12] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V18 rat1         [V18,T03] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat2         [V19,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat3         [V20,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V21 rat4         [V21,T05] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M37190_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
-            mov     x19, x2
-            ; gcrRegs +[x19]
-                       ;; size=24 bbWeight=1 PerfScore 5.00
-G_M37190_IG02:        ; bbWeight=1, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x1]
-            cbz     x1, G_M37190_IG08
-            cbz     x19, G_M37190_IG09
-            add     x20, x1, #16
-            ; byrRegs +[x20]
-            ldr     w21, [x1, #0x08]
-            ldr     x1, [x0, #0x38]
-            ; gcrRegs -[x1]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M37190_IG05
-                       ;; size=32 bbWeight=1 PerfScore 13.00
-G_M37190_IG03:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
-            ldr     x2, [x1, #0x18]
-            cbz     x2, G_M37190_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M37190_IG04:        ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
-            mov     x0, x2
-            b       G_M37190_IG06
-                       ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M37190_IG05:        ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
+            str     x0, [fp, #0x18]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     x21, x2
+            ; gcrRegs +[x21]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M37190_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M37190_IG10
+            cbz     x21, G_M37190_IG11
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M37190_IG04
+                       ;; size=20 bbWeight=1 PerfScore 9.00
+G_M37190_IG03:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-                       ;; size=16 bbWeight=0.36 PerfScore 0.90
-G_M37190_IG06:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref
-            mov     x1, x20
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M37190_IG04:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            add     x22, x20, #16
+            ; byrRegs +[x22]
+            ldr     w20, [x20, #0x08]
+            ; gcrRegs -[x20]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M37190_IG07
+                       ;; size=24 bbWeight=1 PerfScore 11.00
+G_M37190_IG05:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M37190_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M37190_IG06:        ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            b       G_M37190_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M37190_IG07:        ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M37190_IG08:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=400000 {x22}, byref
+            mov     x1, x22
             ; byrRegs +[x1]
-            mov     w2, w21
-            mov     x3, x19
+            mov     w2, w20
+            mov     x3, x21
             ; gcrRegs +[x3]
             movz    x4, #0xD1FFAB1E      // code for <unknown method>
             movk    x4, #0xD1FFAB1E LSL #16
             movk    x4, #0xD1FFAB1E LSL #32
             ldr     x4, [x4]
             blr     x4
-            ; gcrRegs -[x3 x19]
-            ; byrRegs -[x1 x20]
+            ; gcrRegs -[x3 x21]
+            ; byrRegs -[x1 x22]
                         ;; size=32 bbWeight=1 PerfScore 7.00
-G_M37190_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+G_M37190_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
-G_M37190_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                      ;; size=16 bbWeight=1 PerfScore 4.00
+G_M37190_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             mov     w0, #2
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -96,7 +112,7 @@ G_M37190_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             blr     x1
             brk_windows #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M37190_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37190_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     w0, #29
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -106,7 +122,7 @@ G_M37190_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 192, prolog size 20, PerfScore 35.06, instruction count 48, allocated bytes for code 192 (MethodHash=c2626eb9) for method System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
+; Total bytes of code 232, prolog size 20, PerfScore 42.52, instruction count 58, allocated bytes for code 232 (MethodHash=c2626eb9) for method System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -117,7 +133,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 48 (0x00030) Actual length = 192 (0x0000c0)
+  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)
@@ -125,9 +141,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
benchmarks.run_pgo.windows.arm64.checked.mch
-40 (-29.41%) : 14371.dasm - System.Linq.Enumerable+d66`1[System.Canon]:<>m__Finally1():this (Tier1)
@@ -9,13 +9,11 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  4,  4   )     ref  ->   x0         this class-hnd single-def <System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]>
-;  V01 loc0         [V01,T03] (  4,  2.03)     ref  ->   x0         class-hnd single-def <System.IDisposable>
+;  V00 this         [V00,T00] (  4,  4   )     ref  ->   x0         this class-hnd single-def <System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]>
+;  V01 loc0         [V01,T01] (  4,  2.03)     ref  ->   x0         class-hnd single-def <System.IDisposable>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1+Enumerator[System.Reflection.MemberInfo]>
 ;* V04 tmp2         [V04    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;  V05 rat0         [V05,T02] (  3,  4.07)     ref  ->   x1         "Spilling to split statement for tree"
-;  V06 rat1         [V06,T00] (  6,  8   )     ref  ->   x0         class-hnd "replacement local" <System.IDisposable>
 ;
 ; Lcl frame size = 0
 
@@ -29,62 +27,42 @@ G_M19792_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
             str     w1, [x0, #0x28]
             ldr     x1, [x0, #0x20]
             ; gcrRegs +[x1]
-            mov     x0, x1
-            cbz     x0, G_M19792_IG06
-                       ;; size=20 bbWeight=1 PerfScore 6.00
-G_M19792_IG03:        ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x0]
-            ; gcrRegs -[x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x0, x2
-            beq     G_M19792_IG05
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M19792_IG04:        ; bbWeight=0.03, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E
+            ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            b       G_M19792_IG06
-                       ;; size=20 bbWeight=0.03 PerfScore 0.12
-G_M19792_IG05:        ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, xzr
-            ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=0.47 PerfScore 0.23
-G_M19792_IG06:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
-            cbnz    x0, G_M19792_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M19792_IG07:        ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+            cbnz    x0, G_M19792_IG04
+                       ;; size=32 bbWeight=1 PerfScore 8.00
+G_M19792_IG03:        ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x0]
             ldp     fp, lr, [sp], #0x10
             ret     lr
                        ;; size=8 bbWeight=0.99 PerfScore 1.98
-G_M19792_IG08:        ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M19792_IG04:        ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs +[x0]
             ldr     x11, [x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x11, x1
-            beq     G_M19792_IG07
+            beq     G_M19792_IG03
                       ;; size=24 bbWeight=0.02 PerfScore 0.14
-G_M19792_IG09:        ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M19792_IG05:        ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
             movk    x11, #0xD1FFAB1E LSL #16
             movk    x11, #0xD1FFAB1E LSL #32
             ldr     x1, [x11]
                        ;; size=16 bbWeight=0.01 PerfScore 0.05
-G_M19792_IG10:        ; bbWeight=0.01, epilog, nogc, extend
+G_M19792_IG06:        ; bbWeight=0.01, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             br      x1
             ; gcr arg pop 0
                        ;; size=8 bbWeight=0.01 PerfScore 0.02
 
-; Total bytes of code 136, prolog size 8, PerfScore 14.04, instruction count 34, allocated bytes for code 136 (MethodHash=2aa8b2af) for method System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:<>m__Finally1():this (Tier1)
+; Total bytes of code 96, prolog size 8, PerfScore 11.69, instruction count 24, allocated bytes for code 96 (MethodHash=2aa8b2af) for method System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:<>m__Finally1():this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -95,7 +73,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 34 (0x00022) Actual length = 136 (0x000088)
+  Function Length   : 24 (0x00018) Actual length = 96 (0x000060)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-36 (-14.52%) : 20542.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
@@ -9,13 +9,12 @@
 ; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
-;  V01 loc0         [V01,T02] (  7,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
+;  V00 arg0         [V00,T00] (  5,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
+;  V01 loc0         [V01,T01] (  5,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
+;  V03 tmp1         [V03,T02] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt return temp"
 ;* V05 tmp3         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;  V06 rat0         [V06,T00] (  6,  7   )     ref  ->   x0         class-hnd "replacement local" <System.Reflection.IReflectableType>
 ;
 ; Lcl frame size = 0
 
@@ -27,55 +26,34 @@ G_M46371_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
                        ;; size=16 bbWeight=1 PerfScore 3.00
 G_M46371_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M46371_IG10
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            cbnz    x0, G_M46371_IG06
-                       ;; size=12 bbWeight=1 PerfScore 2.50
-G_M46371_IG03:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M46371_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M46371_IG04:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            bne     G_M46371_IG11
-                       ;; size=24 bbWeight=1 PerfScore 6.00
-G_M46371_IG05:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x10]
-            ldp     fp, lr, [sp], #0x20
-            ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
-G_M46371_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            beq     G_M46371_IG03
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M46371_IG07:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
+            cbz     x19, G_M46371_IG06
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            cbnz    x0, G_M46371_IG04
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            cbz     x0, G_M46371_IG04
+            ldr     x1, [x0]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x1, x2
+            bne     G_M46371_IG07
+                       ;; size=52 bbWeight=1 PerfScore 11.00
+G_M46371_IG03:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x19, x20, [sp, #0x10]
+            ldp     fp, lr, [sp], #0x20
+            ret     lr
+                       ;; size=12 bbWeight=1 PerfScore 3.00
+G_M46371_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
@@ -92,18 +70,18 @@ G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             mov     x0, x20
             ; gcrRegs +[x0]
                        ;; size=48 bbWeight=0 PerfScore 0.00
-G_M46371_IG09:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG05:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M46371_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0 x20]
             mov     w0, #0xD1FFAB1E
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_STRCNS
+            bl      CORINFO_HELP_NEWARR_1_ALIGN8
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // code for System.ArgumentNullException:Throw(System.String)
@@ -115,21 +93,21 @@ G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             ; gcr arg pop 0
             brk_windows #0
                        ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46371_IG11:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M46371_IG07:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x0]
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
             movk    x11, #0xD1FFAB1E LSL #16
             movk    x11, #0xD1FFAB1E LSL #32
             ldr     x1, [x11]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M46371_IG12:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG08:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             br      x1
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 248, prolog size 16, PerfScore 18.50, instruction count 62, allocated bytes for code 248 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
+; Total bytes of code 212, prolog size 16, PerfScore 17.00, instruction count 53, allocated bytes for code 212 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -140,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 62 (0x0003e) Actual length = 248 (0x0000f8)
+  Function Length   : 53 (0x00035) Actual length = 212 (0x0000d4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-36 (-14.52%) : 16699.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
@@ -9,13 +9,12 @@
 ; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
-;  V01 loc0         [V01,T02] (  7,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
+;  V00 arg0         [V00,T00] (  5,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
+;  V01 loc0         [V01,T01] (  5,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
+;  V03 tmp1         [V03,T02] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt return temp"
 ;* V05 tmp3         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;  V06 rat0         [V06,T00] (  6,  7   )     ref  ->   x0         class-hnd "replacement local" <System.Reflection.IReflectableType>
 ;
 ; Lcl frame size = 0
 
@@ -27,55 +26,34 @@ G_M46371_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
                        ;; size=16 bbWeight=1 PerfScore 3.00
 G_M46371_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M46371_IG10
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            cbnz    x0, G_M46371_IG06
-                       ;; size=12 bbWeight=1 PerfScore 2.50
-G_M46371_IG03:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M46371_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M46371_IG04:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            bne     G_M46371_IG11
-                       ;; size=24 bbWeight=1 PerfScore 6.00
-G_M46371_IG05:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x10]
-            ldp     fp, lr, [sp], #0x20
-            ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
-G_M46371_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            beq     G_M46371_IG03
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M46371_IG07:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
+            cbz     x19, G_M46371_IG06
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            cbnz    x0, G_M46371_IG04
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            cbz     x0, G_M46371_IG04
+            ldr     x1, [x0]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x1, x2
+            bne     G_M46371_IG07
+                       ;; size=52 bbWeight=1 PerfScore 11.00
+G_M46371_IG03:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x19, x20, [sp, #0x10]
+            ldp     fp, lr, [sp], #0x20
+            ret     lr
+                       ;; size=12 bbWeight=1 PerfScore 3.00
+G_M46371_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
@@ -92,18 +70,18 @@ G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             mov     x0, x20
             ; gcrRegs +[x0]
                        ;; size=48 bbWeight=0 PerfScore 0.00
-G_M46371_IG09:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG05:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M46371_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0 x20]
             mov     w0, #0xD1FFAB1E
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_STRCNS
+            bl      CORINFO_HELP_NEWARR_1_ALIGN8
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // code for System.ArgumentNullException:Throw(System.String)
@@ -115,21 +93,21 @@ G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             ; gcr arg pop 0
             brk_windows #0
                        ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46371_IG11:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M46371_IG07:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x0]
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
             movk    x11, #0xD1FFAB1E LSL #16
             movk    x11, #0xD1FFAB1E LSL #32
             ldr     x1, [x11]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M46371_IG12:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG08:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             br      x1
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 248, prolog size 16, PerfScore 18.50, instruction count 62, allocated bytes for code 248 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
+; Total bytes of code 212, prolog size 16, PerfScore 17.00, instruction count 53, allocated bytes for code 212 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -140,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 62 (0x0003e) Actual length = 248 (0x0000f8)
+  Function Length   : 53 (0x00035) Actual length = 212 (0x0000d4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+48 (+36.36%) : 7664.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,84 +9,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  3,  2.20)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T00] (  5,  3.24)    long  ->   x1         single-def
-;  V02 arg1         [V02,T01] (  4,  3.20)   byref  ->  x19         single-def
+;  V00 this         [V00,T02] (  3,  2.20)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  3.50)    long  ->  x19         single-def
+;  V02 arg1         [V02,T01] (  4,  3.20)   byref  ->  x20         single-def
 ;  V03 loc0         [V03,T03] (  7,  3.79)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T04] (  4,  1.57)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T04] (  4,  1.57)     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  0.79)    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  0.79)    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  1.10)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  1.10)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  0.63)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.20 PerfScore 1.38
-G_M58319_IG04:        ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.16, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.16 PerfScore 0.16
-G_M58319_IG05:        ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.04, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.04 PerfScore 0.12
-G_M58319_IG06:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.20 PerfScore 2.16
+G_M58319_IG07:        ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.16 PerfScore 0.63
+G_M58319_IG08:        ; bbWeight=0.07, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.07 PerfScore 0.21
+G_M58319_IG09:        ; bbWeight=0.20, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.20 PerfScore 1.38
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.20 PerfScore 0.69
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 17.53, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 19.34, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -97,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +126,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+48 (+36.36%) : 12852.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,84 +9,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  3,  2.20)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T00] (  5,  3.25)    long  ->   x1         single-def
-;  V02 arg1         [V02,T01] (  4,  3.20)   byref  ->  x19         single-def
+;  V00 this         [V00,T02] (  3,  2.20)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  3.52)    long  ->  x19         single-def
+;  V02 arg1         [V02,T01] (  4,  3.20)   byref  ->  x20         single-def
 ;  V03 loc0         [V03,T03] (  7,  3.82)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T04] (  4,  1.64)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T04] (  4,  1.64)     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  0.82)    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  0.82)    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  1.15)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  1.15)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  0.65)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.20 PerfScore 1.43
-G_M58319_IG04:        ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.16, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.16 PerfScore 0.16
-G_M58319_IG05:        ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.04, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.04 PerfScore 0.12
-G_M58319_IG06:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.20 PerfScore 2.25
+G_M58319_IG07:        ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.16 PerfScore 0.65
+G_M58319_IG08:        ; bbWeight=0.07, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.07 PerfScore 0.22
+G_M58319_IG09:        ; bbWeight=0.20, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.20 PerfScore 1.43
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.20 PerfScore 0.72
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 17.65, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 19.56, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -97,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +126,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+48 (+36.36%) : 16440.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,84 +9,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  3,  2.20)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T00] (  5,  3.24)    long  ->   x1         single-def
-;  V02 arg1         [V02,T01] (  4,  3.20)   byref  ->  x19         single-def
+;  V00 this         [V00,T02] (  3,  2.20)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  3.51)    long  ->  x19         single-def
+;  V02 arg1         [V02,T01] (  4,  3.20)   byref  ->  x20         single-def
 ;  V03 loc0         [V03,T03] (  7,  3.80)     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T04] (  4,  1.61)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T04] (  4,  1.61)     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  0.80)    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  0.80)    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  1.13)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  1.13)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  0.64)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.20 PerfScore 1.41
-G_M58319_IG04:        ; bbWeight=0.16, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.16, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.16 PerfScore 0.16
-G_M58319_IG05:        ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.04, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.04 PerfScore 0.12
-G_M58319_IG06:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.20, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.20 PerfScore 2.21
+G_M58319_IG07:        ; bbWeight=0.16, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.16 PerfScore 0.64
+G_M58319_IG08:        ; bbWeight=0.07, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.07 PerfScore 0.22
+G_M58319_IG09:        ; bbWeight=0.20, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.20 PerfScore 1.41
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.20 PerfScore 0.70
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 17.60, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 19.47, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -97,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,9 +126,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
benchmarks.run_tiered.windows.arm64.checked.mch
-24 (-4.51%) : 1039.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:GetListByName(ulong,int,ulong,int,int,int):System.Canon[]:this (Tier1)
@@ -9,23 +9,23 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 10,  6.50)     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-;  V01 arg1         [V01,T09] (  3,  2.50)    long  ->   x1         single-def
-;  V02 arg2         [V02,T05] (  4,  3.50)     int  ->   x2         single-def
-;  V03 arg3         [V03,T06] (  4,  3.50)    long  ->  x21         single-def
-;  V04 arg4         [V04,T07] (  4,  3.50)     int  ->  x22         single-def
-;  V05 arg5         [V05,T08] (  3,  3   )     int  ->  x23         single-def
-;  V06 arg6         [V06,T02] (  4,  4   )     int  ->  x20         single-def
+;  V01 arg1         [V01,T08] (  3,  2.50)    long  ->   x1         single-def
+;  V02 arg2         [V02,T04] (  4,  3.50)     int  ->   x2         single-def
+;  V03 arg3         [V03,T05] (  4,  3.50)    long  ->  x21         single-def
+;  V04 arg4         [V04,T06] (  4,  3.50)     int  ->  x22         single-def
+;  V05 arg5         [V05,T07] (  3,  3   )     int  ->  x23         single-def
+;  V06 arg6         [V06,T01] (  4,  4   )     int  ->  x20         single-def
 ;  V07 loc0         [V07    ] ( 10,  6.50)  struct (24) [fp+0x18]  do-not-enreg[XSF] addr-exposed ld-addr-op <System.RuntimeType+RuntimeTypeCache+Filter>
-;  V08 loc1         [V08,T03] ( 10,  5.62)     ref  ->  x21         class-hnd <<unknown class>>
+;  V08 loc1         [V08,T03] (  9,  5.50)     ref  ->  x21         class-hnd <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T11] (  4,  2.75)    long  ->   x1         "spilling helperCall"
-;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V12 tmp3         [V12,T01] (  5,  6.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.__Canon[]>
-;* V13 tmp4         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-;  V14 tmp5         [V14,T12] (  2,  2   )    long  ->  x21         "field V13.m_pStringHeap (fldOffset=0x0)" P-INDEP
-;  V15 tmp6         [V15,T13] (  2,  2   )     int  ->  x22         "field V13.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-;  V16 rat0         [V16,T10] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V17 rat1         [V17,T04] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp2         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
+;  V12 tmp3         [V12,T12] (  2,  2   )    long  ->  x21         "field V11.m_pStringHeap (fldOffset=0x0)" P-INDEP
+;  V13 tmp4         [V13,T13] (  2,  2   )     int  ->  x22         "field V11.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+;  V14 tmp5         [V14,T11] (  2,  4   )    long  ->   x0         "argument with side effect"
+;  V15 rat0         [V15,T09] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V16 rat1         [V16,T10] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V17 rat2         [V17,T02] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -192,38 +192,26 @@ G_M19047_IG13:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             ldr     x0, [x19]
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M19047_IG15
+            ldr     x2, [x1, #0x18]
+            cbz     x2, G_M19047_IG15
                       ;; size=20 bbWeight=1 PerfScore 13.00
 G_M19047_IG14:        ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x2
             b       G_M19047_IG16
-                     ;; size=4 bbWeight=0.80 PerfScore 0.80
+                        ;; size=8 bbWeight=0.80 PerfScore 1.20
 G_M19047_IG15:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            mov     x1, x0
-                       ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x21
-            ; gcrRegs +[x0]
-            cbz     x0, G_M19047_IG19
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19047_IG17:        ; bbWeight=0.25, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            cmp     x2, x1
-            beq     G_M19047_IG19
-                       ;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M19047_IG18:        ; bbWeight=0.12, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x1
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
+                       ;; size=16 bbWeight=0.20 PerfScore 0.50
+G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             mov     x1, x21
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1 x21] +[x0]
-                       ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M19047_IG19:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+                     ;; size=8 bbWeight=1 PerfScore 1.50
+G_M19047_IG17:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
@@ -239,7 +227,7 @@ RWD00   dd  G_M19047_IG05 - G_M19047_IG02
            dd  G_M19047_IG10 - G_M19047_IG02
 
 
-; Total bytes of code 532, prolog size 24, PerfScore 81.02, instruction count 133, allocated bytes for code 532 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
+; Total bytes of code 508, prolog size 24, PerfScore 79.95, instruction count 127, allocated bytes for code 508 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -250,7 +238,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 133 (0x00085) Actual length = 532 (0x000214)
+  Function Length   : 127 (0x0007f) Actual length = 508 (0x0001fc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-20 (-3.70%) : 2035.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object
@@ -10,23 +10,21 @@
 ;
 ;  V00 arg0         [V00,T00] (  9,  6   )     ref  ->  x19         class-hnd single-def <System.RuntimeType>
 ;  V01 arg1         [V01,T01] (  8,  5   )     int  ->  x20         single-def
-;* V02 loc0         [V02,T12] (  0,  0   )   ubyte  ->  zero-ref   
-;  V03 loc1         [V03,T06] (  3,  2   )   ubyte  ->  x21        
+;* V02 loc0         [V02,T11] (  0,  0   )   ubyte  ->  zero-ref   
+;  V03 loc1         [V03,T04] (  3,  2   )   ubyte  ->  x21        
 ;* V04 loc2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Object[]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T05] (  3,  2.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T13] (  3,  1.25)    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T03] (  5,  3.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.Object[]>
-;  V09 tmp4         [V09,T07] (  3,  1.50)     ref  ->   x0        
-;  V10 tmp5         [V10,T08] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-;  V11 tmp6         [V11,T04] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V12 tmp7         [V12,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
-;* V13 tmp8         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
-;* V14 tmp9         [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V15 tmp10        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V16 tmp11        [V16,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
-;  V17 cse0         [V17,T10] (  3,  1.50)    long  ->   x0         "CSE - moderate"
-;  V18 cse1         [V18,T09] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V06 tmp1         [V06,T06] (  3,  1.50)     ref  ->   x0        
+;  V07 tmp2         [V07,T07] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+;  V08 tmp3         [V08,T03] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V09 tmp4         [V09,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+;* V10 tmp5         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
+;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;* V12 tmp7         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;  V13 tmp8         [V13,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
+;  V14 tmp9         [V14,T05] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V15 cse0         [V15,T09] (  3,  1.50)    long  ->   x0         "CSE - moderate"
+;  V16 cse1         [V16,T08] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
 ;
 ; Lcl frame size = 8
 
@@ -94,7 +92,7 @@ G_M32569_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             b       G_M32569_IG07
@@ -105,16 +103,18 @@ G_M32569_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #37
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x0, [x1]
             ; gcrRegs +[x0]
+            ; byrRegs -[x0]
                        ;; size=36 bbWeight=0.50 PerfScore 3.75
 G_M32569_IG07:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                      ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
@@ -124,10 +124,10 @@ G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs -[x19] +[x0]
             ; gcr arg pop 0
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=32 bbWeight=0.50 PerfScore 3.00
 G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
@@ -135,18 +135,20 @@ G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #38
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             ldr     x0, [x0]
             ; gcrRegs +[x0]
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=40 bbWeight=0.50 PerfScore 4.25
 G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
-            cbz     w20, G_M32569_IG14
+            cbz     w20, G_M32569_IG11
             mov     x0, x19
             ; gcrRegs +[x0]
             mov     w1, w20
@@ -159,43 +161,32 @@ G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            cbz     x0, G_M32569_IG13
-                       ;; size=40 bbWeight=0.50 PerfScore 4.50
-G_M32569_IG11:        ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #0xD1FFAB1E LSL #32
-            cmp     x2, x3
-            beq     G_M32569_IG13
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M32569_IG12:        ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            mov     x0, x3
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-                      ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            b       G_M32569_IG16
+                       ;; size=56 bbWeight=0.50 PerfScore 5.75
+G_M32569_IG11:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
             ldr     x0, [x19, #0x10]
-            cbz     x0, G_M32569_IG16
+            cbz     x0, G_M32569_IG13
             bl      <unknown method>
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
             ; gcrRegs +[x20]
-            cbz     x20, G_M32569_IG16
+            cbz     x20, G_M32569_IG13
             ldr     x0, [x20]
             ; gcrRegs -[x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            beq     G_M32569_IG15
+            beq     G_M32569_IG12
             movz    x1, #8
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -209,10 +200,10 @@ G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcrRegs -[x0 x19]
             ; gcr arg pop 0
                        ;; size=80 bbWeight=0.50 PerfScore 10.00
-G_M32569_IG15:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG17
+G_M32569_IG12:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M32569_IG14
                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20] +[x19]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -226,7 +217,7 @@ G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             mov     x20, x0
             ; gcrRegs +[x20]
                        ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -236,14 +227,14 @@ G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             ldr     x1, [x1]
             ldr     wzr, [x0]
                        ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M32569_IG18:        ; bbWeight=0.50, epilog, nogc, extend
+G_M32569_IG15:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x1
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x20]
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
@@ -251,7 +242,7 @@ G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
 
-; Total bytes of code 540, prolog size 24, PerfScore 64.94, instruction count 135, allocated bytes for code 540 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
+; Total bytes of code 520, prolog size 24, PerfScore 64.00, instruction count 130, allocated bytes for code 520 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -262,7 +253,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 135 (0x00087) Actual length = 540 (0x00021c)
+  Function Length   : 130 (0x00082) Actual length = 520 (0x000208)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-16 (-3.36%) : 12657.dasm - BenchmarksGame.Mandelbrot_2:DoBench(int,System.IO.MemoryStream,ubyte) (Tier1-OSR)
@@ -9,98 +9,99 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T07] (  5, 14   )     int  ->  x19         single-def
-;  V01 arg1         [V01,T08] (  8, 11   )     ref  ->  x20         class-hnd single-def <System.IO.MemoryStream>
-;  V02 arg2         [V02,T10] (  3,  3   )   ubyte  ->  x21         single-def
-;  V03 loc0         [V03,T09] (  2, 10   )     int  ->  x24        
-;  V04 loc1         [V04,T12] (  1,  2   )     int  ->  x25        
-;  V05 loc2         [V05,T18] (  1, 64   )  double  ->   d9        
-;  V06 loc3         [V06,T06] (  4, 26   )     int  ->  x23        
+;  V00 arg0         [V00    ] (  5, 14   )     int  ->  [fp+0xFC]  do-not-enreg[X] addr-exposed single-def tier0-frame
+;  V01 arg1         [V01,T07] (  8, 11   )     ref  ->  x19         class-hnd single-def <System.IO.MemoryStream>
+;  V02 arg2         [V02,T08] (  3,  3   )   ubyte  ->  x20         single-def
+;  V03 loc0         [V03    ] (  2, 10   )     int  ->  [fp+0xE8]  do-not-enreg[X] addr-exposed tier0-frame
+;  V04 loc1         [V04,T10] (  1,  2   )     int  ->  x23        
+;  V05 loc2         [V05,T16] (  1, 64   )  double  ->   d9        
+;  V06 loc3         [V06,T06] (  4, 26   )     int  ->  x22        
 ;  V07 loc4         [V07,T04] (  8, 28   )     int  ->   x4        
 ;  V08 loc5         [V08,T02] (  7, 38   )     int  ->   x3        
-;  V09 loc6         [V09,T16] (  2, 66   )  double  ->   d8        
-;  V10 loc7         [V10,T05] (  5, 28   )     int  ->  x22        
-;  V11 loc8         [V11,T13] (  8,450   )  double  ->  d16        
-;  V12 loc9         [V12,T14] (  7,386   )  double  ->  d17        
-;  V13 loc10        [V13,T17] (  2, 66   )  double  ->  d18        
+;  V09 loc6         [V09,T14] (  2, 66   )  double  ->   d8        
+;  V10 loc7         [V10,T05] (  5, 28   )     int  ->  x21        
+;  V11 loc8         [V11,T11] (  8,450   )  double  ->  d16        
+;  V12 loc9         [V12,T12] (  7,386   )  double  ->  d17        
+;  V13 loc10        [V13,T15] (  2, 66   )  double  ->  d18        
 ;  V14 loc11        [V14,T01] (  4, 50   )     int  ->   x2        
-;  V15 loc12        [V15,T15] (  2,128   )  double  ->  d19        
+;  V15 loc12        [V15,T13] (  2,128   )  double  ->  d19        
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V17 tmp1         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <<unknown class>>
-;* V18 tmp2         [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <<unknown class>>
-;  V19 tmp3         [V19,T00] (  2, 64   )     int  ->   x2         "dup spill"
-;  V20 tmp4         [V20,T03] (  2, 32   )     int  ->   x3         "dup spill"
-;  V21 tmp5         [V21,T11] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V17 tmp1         [V17,T00] (  2, 64   )     int  ->   x2         "dup spill"
+;  V18 tmp2         [V18,T03] (  2, 32   )     int  ->   x3         "dup spill"
+;* V19 tmp3         [V19    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
+;* V20 tmp4         [V20    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
+;  V21 tmp5         [V21,T09] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
 ;
 ; Lcl frame size = 8
 
 G_M48919_IG01:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x60]!
+            stp     fp, lr, [sp, #-0x50]!
             stp     d8, d9, [sp, #0x18]
             stp     x19, x20, [sp, #0x28]
             stp     x21, x22, [sp, #0x38]
-            stp     x23, x24, [sp, #0x48]
-            str     x25, [sp, #0x58]
+            str     x23, [sp, #0x48]
             mov     fp, sp
-            ldr     w19, [fp, #0xD1FFAB1E]
-            ldr     x20, [fp, #0xD1FFAB1E]
-            ; gcrRegs +[x20]
-            ldp     w24, w21, [fp, #0xF8]
-            ldr     w25, [fp, #0xF4]
-            ldr     d9, [fp, #0xE8]
-            ldp     w4, w23, [fp, #0xE0]
-            ldr     w3, [fp, #0xDC]
-            ldr     d8, [fp, #0xD0]
-            ldr     w22, [fp, #0xCC]
-            ldp     d17, d16, [fp, #0xB8]
-            ldr     d18, [fp, #0xB0]
-            ldr     w2, [fp, #0xAC]
-                       ;; size=76 bbWeight=0.01 PerfScore 0.31
-G_M48919_IG02:        ; bbWeight=0.01, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M48919_IG11
+            ldr     x19, [fp, #0xF0]
+            ; gcrRegs +[x19]
+            ldr     w20, [fp, #0xEC]
+            ldr     w23, [fp, #0xE4]
+            ldr     d9, [fp, #0xD8]
+            ldp     w4, w22, [fp, #0xD0]
+            ldr     w3, [fp, #0xCC]
+            ldr     d8, [fp, #0xC0]
+            ldr     w21, [fp, #0xBC]
+            ldp     d17, d16, [fp, #0xA8]
+            ldr     d18, [fp, #0xA0]
+            ldr     w2, [fp, #0x9C]
+                       ;; size=68 bbWeight=0.01 PerfScore 0.28
+G_M48919_IG02:        ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            b       G_M48919_IG10
                       ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M48919_IG03:        ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M48919_IG03:        ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             mov     w4, wzr
             mov     w3, wzr
-            scvtf   d16, w23
+            scvtf   d16, w22
             fmov    d17, #2.0000
             fmul    d16, d16, d17
-            scvtf   d17, w24
+            ldr     w0, [fp, #0xE8]   // [V03 loc0]
+            scvtf   d17, w0
             fdiv    d16, d16, d17
             fmov    d17, #1.0000
             fsub    d8, d16, d17
-            mov     w22, wzr
-            cmp     w19, #0
-            bgt     G_M48919_IG10
-                       ;; size=48 bbWeight=2 PerfScore 64.00
-G_M48919_IG04:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            mov     w21, wzr
+            ldr     w0, [fp, #0xFC]    // [V00 arg0]
+            cmp     w0, #0
+            bgt     G_M48919_IG09
+                       ;; size=56 bbWeight=2 PerfScore 72.00
+G_M48919_IG04:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             cbz     w3, G_M48919_IG06
                        ;; size=4 bbWeight=8 PerfScore 8.00
-G_M48919_IG05:        ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M48919_IG05:        ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             neg     w1, w3
             add     w1, w1, #8
             lsl     w1, w4, w1
             eor     w1, w1, #255
             uxtb    w1, w1
-            mov     x0, x20
+            mov     x0, x19
             ; gcrRegs +[x0]
-            ldr     x2, [x20]
+            ldr     x2, [x19]
             ldr     x2, [x2, #0x70]
             ldr     x2, [x2]
             blr     x2
             ; gcrRegs -[x0]
             ; gcr arg pop 0
                        ;; size=40 bbWeight=2 PerfScore 26.00
-G_M48919_IG06:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            add     w23, w23, #1
-            cmp     w23, w24
+G_M48919_IG06:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            add     w22, w22, #1
+            ldr     w0, [fp, #0xE8]    // [V03 loc0]
+            cmp     w22, w0
             blt     G_M48919_IG03
-                     ;; size=12 bbWeight=8 PerfScore 16.00
-G_M48919_IG07:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            tst     w21, #255
-            beq     G_M48919_IG17
+                        ;; size=16 bbWeight=8 PerfScore 32.00
+G_M48919_IG07:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            tst     w20, #255
+            beq     G_M48919_IG16
                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M48919_IG08:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M48919_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ConsolePal:OpenStandardOutput():System.IO.Stream
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -110,37 +111,31 @@ G_M48919_IG08:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x0, x20
-            ldr     x2, [x20]
+            mov     x0, x19
+            ldr     x2, [x19]
             ldr     x2, [x2, #0x70]
             ldr     x2, [x2, #0x38]
-                      ;; size=40 bbWeight=0.50 PerfScore 7.75
-G_M48919_IG09:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x25, [sp, #0x58]
-            ldp     x23, x24, [sp, #0x48]
-            ldp     x21, x22, [sp, #0x38]
-            ldp     x19, x20, [sp, #0x28]
-            ldp     d8, d9, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x60
-            add     sp, sp, #176
-            br      x2
+            blr     x2
+            ; gcrRegs -[x0-x1 x19]
             ; gcr arg pop 0
-                        ;; size=32 bbWeight=0.50 PerfScore 4.25
-G_M48919_IG10:        ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x0-x1]
+            b       G_M48919_IG16
+                       ;; size=48 bbWeight=0.50 PerfScore 8.75
+G_M48919_IG09:        ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[x19]
             movi    v16.16b, #0
             movi    v17.16b, #0
-            scvtf   d18, w22
+            scvtf   d18, w21
             fmov    d19, #2.0000
             fmul    d18, d18, d19
-            scvtf   d19, w19
+            ldr     w1, [fp, #0xFC]   // [V00 arg0]
+            scvtf   d19, w1
             fdiv    d18, d18, d19
             fmov    d19, #1.5000
             fsub    d18, d18, d19
-            sxtw    w2, w25
+            sxtw    w2, w23
             lsl     w4, w4, #1
-                        ;; size=44 bbWeight=2 PerfScore 63.00
-G_M48919_IG11:        ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+                       ;; size=48 bbWeight=2 PerfScore 67.00
+G_M48919_IG10:        ; bbWeight=64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             fmul    d19, d16, d16
             fmul    d20, d17, d17
             fsub    d19, d19, d20
@@ -153,28 +148,28 @@ G_M48919_IG11:        ; bbWeight=64, gcrefRegs=100000 {x20}, byrefRegs=0000 {},
             fmul    d20, d17, d17
             fadd    d19, d19, d20
             fcmp    d19, d9
-            ble     G_M48919_IG13
+            ble     G_M48919_IG12
                       ;; size=52 bbWeight=64 PerfScore 2080.00
-G_M48919_IG12:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M48919_IG11:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             orr     w4, w4, #1
-            b       G_M48919_IG14
+            b       G_M48919_IG13
                      ;; size=8 bbWeight=8 PerfScore 12.00
-G_M48919_IG13:        ; bbWeight=16, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M48919_IG12:        ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             sub     w2, w2, #1
             cmp     w2, #0
-            bgt     G_M48919_IG11
+            bgt     G_M48919_IG10
                        ;; size=12 bbWeight=16 PerfScore 32.00
-G_M48919_IG14:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M48919_IG13:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             add     w3, w3, #1
             cmp     w3, #8
-            bne     G_M48919_IG16
+            bne     G_M48919_IG15
                        ;; size=12 bbWeight=8 PerfScore 16.00
-G_M48919_IG15:        ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M48919_IG14:        ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             eor     w1, w4, #255
             uxtb    w1, w1
-            mov     x0, x20
+            mov     x0, x19
             ; gcrRegs +[x0]
-            ldr     x2, [x20]
+            ldr     x2, [x19]
             ldr     x2, [x2, #0x70]
             ldr     x2, [x2]
             blr     x2
@@ -183,52 +178,49 @@ G_M48919_IG15:        ; bbWeight=2, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
             mov     w4, wzr
             mov     w3, wzr
...
  
+44 (+9.73%) : 18818.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.__Canon]:GetOrAdd[System.__Canon](System.__Canon,System.Func3[System.Canon,System.Canon,System.Canon],System.Canon):System.__Canon:this (Tier1)
@@ -9,34 +9,37 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] (  5,  4.50)     ref  ->  x21         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
-;  V01 TypeCtx      [V01,T01] (  7,  4.88)    long  ->  x20         single-def
+;  V01 TypeCtx      [V01,T01] (  9,  6.24)    long  ->  x20         single-def
 ;  V02 arg1         [V02,T00] (  9,  6.50)     ref  ->  x19         class-hnd single-def <System.__Canon>
 ;  V03 arg2         [V03,T03] (  5,  4   )     ref  ->  x22         class-hnd single-def <System.Func`3[System.__Canon,System.__Canon,System.__Canon]>
-;  V04 arg3         [V04,T05] (  3,  2.50)     ref  ->  x23         class-hnd single-def <System.__Canon>
-;  V05 loc0         [V05,T08] (  4,  3.50)     ref  ->  x24         class-hnd exact single-def <<unknown class>>
-;  V06 loc1         [V06,T15] (  2,  1.50)     ref  ->  x25         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
+;  V04 arg3         [V04,T06] (  3,  2.50)     ref  ->  x23         class-hnd single-def <System.__Canon>
+;  V05 loc0         [V05,T10] (  4,  3.50)     ref  ->  x24         class-hnd exact single-def <<unknown class>>
+;  V06 loc1         [V06,T18] (  2,  1.50)     ref  ->  x25         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.__Canon]>
 ;* V07 loc2         [V07    ] (  0,  0   )     int  ->  zero-ref   
 ;  V08 loc3         [V08    ] (  3,  2.50)     ref  ->  [fp+0x18]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V11 tmp2         [V11    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
 ;* V12 tmp3         [V12    ] (  0,  0   )  struct ( 8) zero-ref    "non-inline candidate call" <System.Nullable`1[int]>
-;  V13 tmp4         [V13,T12] (  4,  2.50)     int  ->  x25         "Inline return value spill temp"
+;  V13 tmp4         [V13,T14] (  4,  2.50)     int  ->  x25         "Inline return value spill temp"
 ;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V15 tmp6         [V15    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd single-def "Inlining Arg" <System.__Canon>
 ;* V16 tmp7         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V17 tmp8         [V17,T09] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;* V18 tmp9         [V18,T17] (  0,  0   )   ubyte  ->  zero-ref    "field V11.hasValue (fldOffset=0x0)" P-INDEP
-;  V19 tmp10        [V19,T16] (  2,  1   )     int  ->  x25         "field V11.value (fldOffset=0x4)" P-INDEP
+;  V17 tmp8         [V17,T11] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
+;* V18 tmp9         [V18,T20] (  0,  0   )   ubyte  ->  zero-ref    "field V11.hasValue (fldOffset=0x0)" P-INDEP
+;  V19 tmp10        [V19,T19] (  2,  1   )     int  ->  x25         "field V11.value (fldOffset=0x4)" P-INDEP
 ;* V20 tmp11        [V20    ] (  0,  0   )   ubyte  ->  zero-ref    "field V12.hasValue (fldOffset=0x0)" P-INDEP
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref    "field V12.value (fldOffset=0x4)" P-INDEP
-;  V22 tmp13        [V22,T07] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V23 tmp14        [V23,T10] (  3,  3   )  struct ( 8) [fp+0x10]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;  V24 tmp15        [V24,T14] (  2,  2   )     ref  ->   x4         single-def "argument with side effect"
-;  V25 rat0         [V25,T11] (  3,  2.80)    long  ->   x0         "spilling expr"
-;  V26 rat1         [V26,T13] (  3,  2.24)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V27 rat2         [V27,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V28 rat3         [V28,T04] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V22 tmp13        [V22,T09] (  2,  4   )    long  ->   x0         "argument with side effect"
+;  V23 tmp14        [V23,T12] (  3,  3   )  struct ( 8) [fp+0x10]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+;  V24 tmp15        [V24,T16] (  2,  2   )     ref  ->   x4         single-def "argument with side effect"
+;* V25 rat0         [V25,T17] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V26 rat1         [V26,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V27 rat2         [V27,T07] (  2,  3.20)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V28 rat3         [V28,T13] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V29 rat4         [V29,T15] (  3,  2.24)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V30 rat5         [V30,T08] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V31 rat6         [V31,T05] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 
@@ -59,40 +62,57 @@ G_M49603_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x23]
                        ;; size=48 bbWeight=1 PerfScore 9.00
 G_M49603_IG02:        ; bbWeight=1, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M49603_IG16
-            cbz     x22, G_M49603_IG17
+            cbz     x19, G_M49603_IG19
+            cbz     x22, G_M49603_IG20
             add     x0, x21, #8
             ; byrRegs +[x0]
             ldapr   x24, [x0]
             ; gcrRegs +[x24]
             ldr     x25, [x24, #0x08]
             ; gcrRegs +[x25]
-            ldrb    w0, [x21, #0x15]
-            ; byrRegs -[x0]
-            cbnz    w0, G_M49603_IG08
-                       ;; size=28 bbWeight=1 PerfScore 12.50
-G_M49603_IG03:        ; bbWeight=0.50, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x20, #0x38]
+            ; byrRegs -[x0]
             ldr     x1, [x0, #0x08]
-            cmp     x1, #32
-            ble     G_M49603_IG06
-                       ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M49603_IG04:        ; bbWeight=0.40, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
-            ldr     x11, [x0, #0x20]
-            cbz     x11, G_M49603_IG06
-                       ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M49603_IG05:        ; bbWeight=0.32, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref
-            b       G_M49603_IG07
-                       ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M49603_IG06:        ; bbWeight=0.18, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref
+            cmp     x1, #24
+            ble     G_M49603_IG04
+                       ;; size=36 bbWeight=1 PerfScore 16.00
+G_M49603_IG03:        ; bbWeight=0.80, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M49603_IG05
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M49603_IG04:        ; bbWeight=0.36, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref
             mov     x0, x20
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M49603_IG05:        ; bbWeight=1, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+            ldrb    w0, [x21, #0x15]
+            cbnz    w0, G_M49603_IG11
+                       ;; size=8 bbWeight=1 PerfScore 4.00
+G_M49603_IG06:        ; bbWeight=0.50, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x20, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #32
+            ble     G_M49603_IG09
+                       ;; size=16 bbWeight=0.50 PerfScore 3.75
+G_M49603_IG07:        ; bbWeight=0.40, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref, isz
+            ldr     x11, [x0, #0x20]
+            cbz     x11, G_M49603_IG09
+                       ;; size=8 bbWeight=0.40 PerfScore 1.60
+G_M49603_IG08:        ; bbWeight=0.32, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref
+            b       G_M49603_IG10
+                       ;; size=4 bbWeight=0.32 PerfScore 0.32
+G_M49603_IG09:        ; bbWeight=0.18, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref
+            mov     x0, x20
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
             mov     x11, x0
                        ;; size=24 bbWeight=0.18 PerfScore 0.63
-G_M49603_IG07:        ; bbWeight=0.50, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref
+G_M49603_IG10:        ; bbWeight=0.50, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x25}, byrefRegs=0000 {}, byref
             mov     x0, x25
             ; gcrRegs +[x0]
             mov     x1, x19
@@ -101,9 +121,9 @@ G_M49603_IG07:        ; bbWeight=0.50, gcrefRegs=3E80000 {x19 x21 x22 x23 x24 x2
             blr     x2
             ; gcrRegs -[x0-x1 x25]
             sxtw    w25, w0
-            b       G_M49603_IG09
+            b       G_M49603_IG12
                       ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M49603_IG08:        ; bbWeight=0.50, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref
+G_M49603_IG11:        ; bbWeight=0.50, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref
             mov     x0, x19
             ; gcrRegs +[x0]
             ldr     x1, [x19]
@@ -113,22 +133,22 @@ G_M49603_IG08:        ; bbWeight=0.50, gcrefRegs=1E80000 {x19 x21 x22 x23 x24},
             ; gcrRegs -[x0]
             sxtw    w25, w0
                        ;; size=24 bbWeight=0.50 PerfScore 5.50
-G_M49603_IG09:        ; bbWeight=1, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M49603_IG12:        ; bbWeight=1, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x20, #0x38]
             ldr     x0, [x0, #0x10]
-            cbz     x0, G_M49603_IG11
+            cbz     x0, G_M49603_IG14
                       ;; size=12 bbWeight=1 PerfScore 7.00
-G_M49603_IG10:        ; bbWeight=0.80, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref
-            b       G_M49603_IG12
+G_M49603_IG13:        ; bbWeight=0.80, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref
+            b       G_M49603_IG15
                       ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M49603_IG11:        ; bbWeight=0.20, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref
+G_M49603_IG14:        ; bbWeight=0.20, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref
             mov     x0, x20
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M49603_IG12:        ; bbWeight=1, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M49603_IG15:        ; bbWeight=1, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
             add     x4, fp, #24  // [V08 loc3]
             mov     x1, x24
             ; gcrRegs +[x1]
@@ -141,9 +161,9 @@ G_M49603_IG12:        ; bbWeight=1, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byr
             ldr     x5, [x5]
             blr     x5
             ; gcrRegs -[x1-x2]
-            cbnz    w0, G_M49603_IG14
+            cbnz    w0, G_M49603_IG17
                        ;; size=40 bbWeight=1 PerfScore 8.50
-G_M49603_IG13:        ; bbWeight=0.50, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref
+G_M49603_IG16:        ; bbWeight=0.50, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=0000 {}, byref
             mov     w1, #1
             strb    w1, [fp, #0x10]    // [V23 tmp14]
             str     w25, [fp, #0x14]   // [V23 tmp14+0x04]
@@ -174,11 +194,11 @@ G_M49603_IG13:        ; bbWeight=0.50, gcrefRegs=1E80000 {x19 x21 x22 x23 x24},
             blr     x8
             ; gcrRegs -[x0-x2 x4 x19 x21 x24]
                        ;; size=84 bbWeight=0.50 PerfScore 10.75
-G_M49603_IG14:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M49603_IG17:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ldr     x0, [fp, #0x18]   // [V08 loc3]
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M49603_IG15:        ; bbWeight=1, epilog, nogc, extend
+G_M49603_IG18:        ; bbWeight=1, epilog, nogc, extend
             ldr     x25, [sp, #0x58]
             ldp     x23, x24, [sp, #0x48]
             ldp     x21, x22, [sp, #0x38]
@@ -186,13 +206,13 @@ G_M49603_IG15:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x60
             ret     lr
                        ;; size=24 bbWeight=1 PerfScore 7.00
-G_M49603_IG16:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M49603_IG19:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             mov     w0, #1
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_STRCNS
+            bl      CORINFO_HELP_NEWARR_1_ALIGN8
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(System.String)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -202,12 +222,12 @@ G_M49603_IG16:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             ; gcrRegs -[x0]
             brk_windows #0
                        ;; size=44 bbWeight=0 PerfScore 0.00
-G_M49603_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M49603_IG20:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     w0, #0xD1FFAB1E
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_STRCNS
+            bl      CORINFO_HELP_NEWARR_1_ALIGN8
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(System.String)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -218,7 +238,7 @@ G_M49603_IG17:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
                        ;; size=44 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 452, prolog size 28, PerfScore 73.20, instruction count 113, allocated bytes for code 452 (MethodHash=d62c3e3c) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd[System.__Canon](System.__Canon,System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon):System.__Canon:this (Tier1)
+; Total bytes of code 496, prolog size 28, PerfScore 84.98, instruction count 124, allocated bytes for code 496 (MethodHash=d62c3e3c) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd[System.__Canon](System.__Canon,System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon):System.__Canon:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -229,7 +249,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 113 (0x00071) Actual length = 452 (0x0001c4)
+  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)
  
+40 (+15.38%) : 11517.dasm - System.Array:IndexOfSystem.__Canon:int (Tier1)
@@ -8,11 +8,11 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T02] (  5,  4.36)    long  ->   x0         single-def
-;  V01 arg0         [V01,T00] (  5,  5   )     ref  ->  x19         class-hnd single-def <System.__Canon[]>
-;  V02 arg1         [V02,T06] (  3,  3   )     ref  ->  x22         ld-addr-op class-hnd single-def <System.__Canon>
-;  V03 arg2         [V03,T01] (  5,  5   )     int  ->  x20         single-def
-;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x21         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
+;  V01 arg0         [V01,T01] (  5,  5   )     ref  ->  x20         class-hnd single-def <System.__Canon[]>
+;  V02 arg1         [V02,T07] (  3,  3   )     ref  ->  x23         ld-addr-op class-hnd single-def <System.__Canon>
+;  V03 arg2         [V03,T02] (  5,  5   )     int  ->  x21         single-def
+;  V04 arg3         [V04,T03] (  4,  4   )     int  ->  x22         single-def
 ;* V05 loc0         [V05    ] (  0,  0   )     int  ->  zero-ref   
 ;* V06 loc1         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;* V07 loc2         [V07    ] (  0,  0   )     int  ->  zero-ref   
@@ -24,80 +24,96 @@
 ;* V13 tmp4         [V13    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp5         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V15 tmp6         [V15,T04] (  3,  6   )     ref  ->   x0         single-def "argument with side effect"
-;  V16 cse0         [V16,T09] (  3,  3   )     int  ->   x1         "CSE - aggressive"
-;  V17 rat0         [V17,T08] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V18 rat1         [V18,T05] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V19 rat2         [V19,T07] (  3,  4.48)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V16 cse0         [V16,T10] (  3,  3   )     int  ->   x0         "CSE - aggressive"
+;* V17 rat0         [V17,T11] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V18 rat1         [V18,T05] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V19 rat2         [V19,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V20 rat3         [V20,T06] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V21 rat4         [V21,T08] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M13831_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x20]
-            stp     x21, x22, [sp, #0x30]
+            stp     x19, x20, [sp, #0x18]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x19, x1
-            ; gcrRegs +[x19]
-            mov     x22, x2
-            ; gcrRegs +[x22]
-            mov     w20, w3
-            mov     w21, w4
-                       ;; size=36 bbWeight=1 PerfScore 6.50
-G_M13831_IG02:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M13831_IG08
-            ldr     w1, [x19, #0x08]
-            cmp     w1, w20
-            blo     G_M13831_IG09
-            sub     w1, w1, w20
-            cmp     w1, w21
-            blo     G_M13831_IG10
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x08]
-            cmp     x2, #24
-            ble     G_M13831_IG05
-                       ;; size=44 bbWeight=1 PerfScore 15.00
-G_M13831_IG03:        ; bbWeight=0.80, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M13831_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M13831_IG04:        ; bbWeight=0.64, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            b       G_M13831_IG06
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M13831_IG05:        ; bbWeight=0.36, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     x23, x2
+            ; gcrRegs +[x23]
+            mov     w21, w3
+            mov     w22, w4
+                       ;; size=44 bbWeight=1 PerfScore 8.00
+G_M13831_IG02:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            cbz     x20, G_M13831_IG10
+            ldr     w0, [x20, #0x08]
+            cmp     w0, w21
+            blo     G_M13831_IG11
+            sub     w0, w0, w21
+            cmp     w0, w22
+            blo     G_M13831_IG12
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M13831_IG04
+                       ;; size=40 bbWeight=1 PerfScore 14.50
+G_M13831_IG03:        ; bbWeight=0.20, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x1, x0
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M13831_IG04:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M13831_IG07
+                       ;; size=16 bbWeight=1 PerfScore 7.50
+G_M13831_IG05:        ; bbWeight=0.80, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbz     x0, G_M13831_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M13831_IG06:        ; bbWeight=0.64, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            b       G_M13831_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M13831_IG07:        ; bbWeight=0.36, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M13831_IG06:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x1
+G_M13831_IG08:        ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E      // code for System.Collections.Generic.EqualityComparer`1[System.__Canon]:get_Default():System.Collections.Generic.EqualityComparer`1[System.__Canon]
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs +[x0]
-            mov     x1, x19
+            mov     x1, x20
             ; gcrRegs +[x1]
-            mov     x2, x22
+            mov     x2, x23
             ; gcrRegs +[x2]
-            mov     w3, w20
-            mov     w4, w21
+            mov     w3, w21
+            mov     w4, w22
             ldr     x5, [x0]
             ldr     x5, [x5, #0x50]
             ldr     x5, [x5]
             blr     x5
-            ; gcrRegs -[x0-x2 x19 x22]
-                       ;; size=56 bbWeight=1 PerfScore 18.00
-G_M13831_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
+            ; gcrRegs -[x0-x2 x20 x23]
+                       ;; size=52 bbWeight=1 PerfScore 17.50
+G_M13831_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 4.00
-G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                      ;; size=20 bbWeight=1 PerfScore 6.00
+G_M13831_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             mov     w0, #2
             movz    x1, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -106,7 +122,7 @@ G_M13831_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             blr     x1
             brk_windows #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowStartIndexArgumentOutOfRange_ArgumentOutOfRange_IndexMustBeLessOrEqual()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -114,7 +130,7 @@ G_M13831_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             brk_windows #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M13831_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowCountArgumentOutOfRange_ArgumentOutOfRange_Count()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -123,7 +139,7 @@ G_M13831_IG10:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 260, prolog size 20, PerfScore 48.42, instruction count 65, allocated bytes for code 260 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
+; Total bytes of code 300, prolog size 24, PerfScore 59.02, instruction count 75, allocated bytes for code 300 (MethodHash=0c9bc9f8) for method System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +150,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 65 (0x00041) Actual length = 260 (0x000104)
+  Function Length   : 75 (0x0004b) Actual length = 300 (0x00012c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -142,10 +158,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
-    E4          end
-    E4          end
 
  
+48 (+36.36%) : 1034.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -8,84 +8,105 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  3,  2.50)     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T00] (  5,  3.60)    long  ->   x1         single-def
-;  V02 arg1         [V02,T01] (  4,  3.50)   byref  ->  x19         single-def
+;  V00 this         [V00,T03] (  3,  2.50)     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T00] (  7,  4.28)    long  ->  x19         single-def
+;  V02 arg1         [V02,T01] (  4,  3.50)   byref  ->  x20         single-def
 ;  V03 loc0         [V03,T02] (  7,  5   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T04] (  4,  4   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T04] (  4,  4   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T06] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T08] (  3,  2   )    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T05] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V11 rat2         [V11,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V12 rat3         [V12,T06] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V13 rat4         [V13,T07] (  2,  1.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
+            cbnz    x0, G_M58319_IG10
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x0, [x0, #0x10]
             cbz     x0, G_M58319_IG05
                        ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG04:        ; bbWeight=0.40, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.40, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M58319_IG05:        ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.10, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.10 PerfScore 0.30
-G_M58319_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=0.50 PerfScore 5.50
+G_M58319_IG07:        ; bbWeight=0.40, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.40 PerfScore 1.60
+G_M58319_IG08:        ; bbWeight=0.18, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.18 PerfScore 0.54
+G_M58319_IG09:        ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=0.50 PerfScore 3.50
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=0.50 PerfScore 1.75
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 22.20, instruction count 33, allocated bytes for code 132 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 180, prolog size 20, PerfScore 27.59, instruction count 45, allocated bytes for code 180 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -96,7 +117,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -104,9 +125,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
coreclr_tests.run.windows.arm64.checked.mch
-4 (-0.82%) : 503.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (FullOpts)
@@ -7,26 +7,24 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T06] (  7,  5.56)    long  ->  x20         single-def
-;  V01 arg0         [V01,T07] (  4,  4   )     ref  ->  x21         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V02 arg1         [V02,T01] (  5, 19   )     ref  ->  x19         class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
-;  V03 arg2         [V03,T08] (  4,  4   )   byref  ->  x22         single-def
-;  V04 loc0         [V04,T02] (  7, 20   )     ref  ->  [fp+0x20]  class-hnd EH-live spill-single-def <<unknown class>>
-;  V05 loc1         [V05,T03] (  3, 17   )     ref  ->  x20         class-hnd <System.__Canon>
-;  V06 loc2         [V06,T14] (  2,  2   )     ref  ->  [fp+0x18]  do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
+;  V00 TypeCtx      [V00,T05] (  7, 15.08)    long  ->  x20         single-def
+;  V01 arg0         [V01,T08] (  4,  4   )     ref  ->  x21         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V02 arg1         [V02,T03] (  5, 19   )     ref  ->  x19         class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
+;  V03 arg2         [V03,T09] (  4,  4   )   byref  ->  x22         single-def
+;  V04 loc0         [V04,T04] (  7, 20   )     ref  ->  [fp+0x20]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V05 loc1         [V05,T06] (  3, 17   )     ref  ->  x23         class-hnd <System.__Canon>
+;  V06 loc2         [V06,T12] (  2,  2   )     ref  ->  [fp+0x18]  do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
 ;* V07 loc3         [V07    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd <System.__Canon>
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T09] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T10] (  4,  6   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V12 tmp4         [V12,T00] (  3, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V13 PSPSym       [V13,T15] (  1,  1   )    long  ->  [fp+0x30]  do-not-enreg[V] "PSPSym"
-;  V14 cse0         [V14,T05] (  2,  9   )    long  ->  x23         hoist "CSE - aggressive"
-;  V15 cse1         [V15,T04] (  6, 13   )    long  ->  x21         multi-def "CSE - aggressive"
-;  V16 rat0         [V16,T10] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V17 rat1         [V17,T13] (  3,  4   )    long  ->  x23         "runtime lookup"
-;  V18 rat2         [V18,T11] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V19 rat3         [V19,T12] (  3,  4.48)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V12 tmp4         [V12,T00] (  4, 48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V13 PSPSym       [V13,T13] (  1,  1   )    long  ->  [fp+0x30]  do-not-enreg[V] "PSPSym"
+;  V14 cse0         [V14,T07] (  6, 13   )    long  ->  x21         multi-def "CSE - aggressive"
+;  V15 rat0         [V15,T11] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V16 rat1         [V16,T01] (  3, 44.80)    long  ->   x0         "spilling expr"
+;  V17 rat2         [V17,T02] (  3, 35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -47,10 +45,10 @@ G_M62024_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             mov     x22, x3
             ; byrRegs +[x22]
                        ;; size=48 bbWeight=1 PerfScore 9.00
-G_M62024_IG02:        ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz
-            ; GC ptr vars +{V06 V14}
-            cbz     x21, G_M62024_IG20
-            cbz     x19, G_M62024_IG21
+G_M62024_IG02:        ; bbWeight=1, gcVars=0000000000001000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz
+            ; GC ptr vars +{V06 V12}
+            cbz     x21, G_M62024_IG21
+            cbz     x19, G_M62024_IG22
             ldr     x0, [x20, #0x38]
             ldr     x11, [x0, #0x10]
             cbz     x11, G_M62024_IG04
@@ -63,7 +61,7 @@ G_M62024_IG04:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=400
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
             mov     x11, x0
                        ;; size=24 bbWeight=0.20 PerfScore 0.70
@@ -77,8 +75,8 @@ G_M62024_IG05:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=400000
             str     x0, [fp, #0x20]    // [V04 loc0]
             ; GC ptr vars +{V04}
                        ;; size=16 bbWeight=1 PerfScore 5.50
-G_M62024_IG06:        ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz
-            ; GC ptr vars -{V14}
+G_M62024_IG06:        ; bbWeight=1, gcVars=0000000000001010 {V04 V06}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref, isz
+            ; GC ptr vars -{V12}
             movz    x21, #24
             movk    x21, #0xD1FFAB1E LSL #16
             movk    x21, #0xD1FFAB1E LSL #32
@@ -87,67 +85,68 @@ G_M62024_IG06:        ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M62024_IG13
+            cbz     w0, G_M62024_IG14
+                       ;; size=28 bbWeight=1 PerfScore 7.00
+G_M62024_IG07:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
             ldr     x0, [x20, #0x38]
             ldr     x1, [x0, #0x08]
             cmp     x1, #24
-            ble     G_M62024_IG09
-                       ;; size=44 bbWeight=1 PerfScore 14.50
-G_M62024_IG07:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
-            ldr     x23, [x0, #0x18]
-            cbz     x23, G_M62024_IG09
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M62024_IG08:        ; bbWeight=0.64, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
-            b       G_M62024_IG10
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M62024_IG09:        ; bbWeight=0.36, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+            ble     G_M62024_IG10
+                       ;; size=16 bbWeight=8 PerfScore 60.00
+G_M62024_IG08:        ; bbWeight=6.40, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+            ldr     x11, [x0, #0x18]
+            cbz     x11, G_M62024_IG10
+                       ;; size=8 bbWeight=6.40 PerfScore 25.60
+G_M62024_IG09:        ; bbWeight=5.12, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
+            b       G_M62024_IG11
+                       ;; size=4 bbWeight=5.12 PerfScore 5.12
+G_M62024_IG10:        ; bbWeight=2.88, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref
             mov     x0, x20
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
-            mov     x23, x0
-                       ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M62024_IG10:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
-            mov     x11, x23
+            mov     x11, x0
+                       ;; size=24 bbWeight=2.88 PerfScore 10.08
+G_M62024_IG11:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
             ldr     x0, [fp, #0x20]   // [V04 loc0]
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
             ; gcr arg pop 0
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x1, x20
+            mov     x23, x0
+            ; gcrRegs +[x23]
+            mov     x1, x23
             ; gcrRegs +[x1]
             ldr     x0, [x19, #0x08]
             ldr     x2, [x19, #0x18]
             blr     x2
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
-            cbnz    w0, G_M62024_IG12
+            cbnz    w0, G_M62024_IG13
             ldr     x0, [fp, #0x20]   // [V04 loc0]
             ; gcrRegs +[x0]
             mov     x11, x21
             ldr     x1, [x11]
             blr     x1
-            ; gcrRegs -[x0 x20]
+            ; gcrRegs -[x0 x23]
             ; gcr arg pop 0
-            cbnz    w0, G_M62024_IG10
-                       ;; size=60 bbWeight=8 PerfScore 184.00
-G_M62024_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+            cbnz    w0, G_M62024_IG07
+                       ;; size=56 bbWeight=8 PerfScore 180.00
+G_M62024_IG12:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
             ; gcrRegs -[x19]
-            b       G_M62024_IG13
+            b       G_M62024_IG14
                      ;; size=4 bbWeight=1 PerfScore 1.00
-G_M62024_IG12:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=400000 {x22}, byref
-            ; gcrRegs +[x20]
+G_M62024_IG13:        ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=400000 {x22}, byref
+            ; gcrRegs +[x23]
             mov     w0, #1
             strb    w0, [x22]
-            str     x20, [fp, #0x18]    // [V06 loc2]
-            b       G_M62024_IG14
+            str     x23, [fp, #0x18]    // [V06 loc2]
+            b       G_M62024_IG15
                       ;; size=16 bbWeight=1 PerfScore 3.50
-G_M62024_IG13:        ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
-            ; gcrRegs -[x20]
+G_M62024_IG14:        ; bbWeight=1, gcVars=0000000000000010 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
+            ; gcrRegs -[x23]
             ; GC ptr vars -{V06}
             ldr     x0, [fp, #0x20]    // [V04 loc0]
             ; gcrRegs +[x0]
@@ -157,44 +156,44 @@ G_M62024_IG13:        ; bbWeight=1, gcVars=0000000000000004 {V04}, gcrefRegs=000
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            b       G_M62024_IG18
+            b       G_M62024_IG19
                       ;; size=20 bbWeight=1 PerfScore 7.50
-G_M62024_IG14:        ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG15:        ; bbWeight=1, gcVars=0000000000001010 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; byrRegs -[x22]
-            ; GC ptr vars +{V02 V04 V06 V14}
+            ; GC ptr vars +{V04 V06 V12}
             ldr     x0, [fp, #0x30] // [V13 PSPSym]
-            bl      G_M62024_IG22
+            bl      G_M62024_IG23
                        ;; size=8 bbWeight=1 PerfScore 3.00
-G_M62024_IG15:        ; bbWeight=1, nogc, extend
+G_M62024_IG16:        ; bbWeight=1, nogc, extend
             nop     
                        ;; size=4 bbWeight=1 PerfScore 0.50
-G_M62024_IG16:        ; bbWeight=1, gcVars=0000000000004000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            ; GC ptr vars -{V02 V04 V14}
+G_M62024_IG17:        ; bbWeight=1, gcVars=0000000000001000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            ; GC ptr vars -{V04 V12}
             ldr     x0, [fp, #0x18]    // [V06 loc2]
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M62024_IG17:        ; bbWeight=1, epilog, nogc, extend
+G_M62024_IG18:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
             ldp     fp, lr, [sp], #0x60
             ret     lr
                        ;; size=20 bbWeight=1 PerfScore 6.00
-G_M62024_IG18:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
+G_M62024_IG19:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
             ; gcrRegs -[x0]
             ; byrRegs +[x22]
             ; GC ptr vars -{V06}
             strb    wzr, [x22]
             mov     x0, xzr
                        ;; size=8 bbWeight=1 PerfScore 1.50
-G_M62024_IG19:        ; bbWeight=1, epilog, nogc, extend
+G_M62024_IG20:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
             ldp     fp, lr, [sp], #0x60
             ret     lr
                        ;; size=20 bbWeight=1 PerfScore 6.00
-G_M62024_IG20:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG21:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; byrRegs -[x22]
             mov     w0, #17
             movz    x1, #0xD1FFAB1E      // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
@@ -205,7 +204,7 @@ G_M62024_IG20:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             ; gcr arg pop 0
             brk_windows #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG21:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG22:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     w0, #12
             movz    x1, #0xD1FFAB1E      // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
             movk    x1, #0xD1FFAB1E LSL #16
@@ -215,8 +214,8 @@ G_M62024_IG21:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcr arg pop 0
             brk_windows #0
                        ;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG22:        ; bbWeight=1, gcVars=0000000000004004 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
-            ; GC ptr vars +{V02 V04 V06 V14}
+G_M62024_IG23:        ; bbWeight=1, gcVars=0000000000001010 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+            ; GC ptr vars +{V04 V06 V12}
             stp     fp, lr, [sp, #-0x40]!
...
  
+24 (+5.45%) : 20350.dasm - System.Linq.Enumerable:ConcatSystem.__Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,32 +8,31 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  9,  5.56)    long  ->  x19         single-def
+;  V00 TypeCtx      [V00,T00] ( 11,  6.16)    long  ->  x19         single-def
 ;  V01 arg0         [V01,T01] (  7,  5.50)     ref  ->  x20         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
 ;  V02 arg1         [V02,T02] (  7,  5   )     ref  ->  x21         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V03 loc0         [V03,T12] (  4,  2   )     ref  ->   x0         class-hnd single-def <System.Linq.Enumerable+ConcatIterator`1[System.__Canon]>
+;  V03 loc0         [V03,T11] (  4,  2   )     ref  ->   x0         class-hnd single-def <System.Linq.Enumerable+ConcatIterator`1[System.__Canon]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T06] (  2,  4   )    long  ->   x0         "spilling helperCall"
-;  V06 tmp2         [V06,T15] (  2,  2   )    long  ->   x0         "spilling helperCall"
+;  V05 tmp1         [V05,T05] (  3,  4   )    long  ->   x0         "spilling helperCall"
+;  V06 tmp2         [V06,T12] (  3,  2   )    long  ->   x0         "spilling helperCall"
 ;  V07 tmp3         [V07,T13] (  3,  2   )    long  ->   x0         "spilling helperCall"
 ;  V08 tmp4         [V08,T04] (  5,  5   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <System.Linq.Enumerable+Concat2Iterator`1[System.__Canon]>
 ;  V09 tmp5         [V09,T14] (  3,  2   )    long  ->   x0         "spilling helperCall"
-;  V10 cse0         [V10,T09] (  3,  2.50)    long  ->  x22         "CSE - aggressive"
-;  V11 rat0         [V11,T05] (  3,  4   )    long  ->  x22         "runtime lookup"
-;  V12 rat1         [V12,T03] (  3,  5.60)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;  V13 rat2         [V13,T07] (  3,  2.80)    long  ->   x0         "spilling expr"
-;  V14 rat3         [V14,T10] (  3,  2.24)    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V15 rat4         [V15,T08] (  3,  2.80)    long  ->   x0         "spilling expr"
-;  V16 rat5         [V16,T11] (  3,  2.24)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V10 rat0         [V10,T03] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V11 rat1         [V11,T06] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V12 rat2         [V12,T07] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V13 rat3         [V13,T09] (  3,  2.24)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V14 rat4         [V14,T08] (  3,  2.80)    long  ->   x0         "spilling expr"
+;  V15 rat5         [V15,T10] (  3,  2.24)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M54395_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x20]
-            stp     x21, x22, [sp, #0x30]
+            stp     fp, lr, [sp, #-0x30]!
+            stp     x19, x20, [sp, #0x18]
+            str     x21, [sp, #0x28]
             mov     fp, sp
-            str     x0, [fp, #0x18]
+            str     x0, [fp, #0x10]
             mov     x19, x0
             mov     x20, x1
             ; gcrRegs +[x20]
@@ -41,11 +40,11 @@ G_M54395_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x21]
                        ;; size=32 bbWeight=1 PerfScore 6.00
 G_M54395_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
-            cbz     x20, G_M54395_IG22
-            cbz     x21, G_M54395_IG23
+            cbz     x20, G_M54395_IG25
+            cbz     x21, G_M54395_IG26
             ldr     x0, [x19, #0x38]
-            ldr     x22, [x0, #0x10]
-            cbz     x22, G_M54395_IG04
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M54395_IG04
                       ;; size=20 bbWeight=1 PerfScore 9.00
 G_M54395_IG03:        ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
             b       G_M54395_IG05
@@ -55,11 +54,9 @@ G_M54395_IG04:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=000
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x22, x0
-                       ;; size=24 bbWeight=0.20 PerfScore 0.70
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
 G_M54395_IG05:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x22
             mov     x1, x20
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for System.Linq.Enumerable:IsEmptyArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte
@@ -69,21 +66,35 @@ G_M54395_IG05:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
             blr     x2
             ; gcrRegs -[x1]
             cbz     w0, G_M54395_IG08
-                        ;; size=32 bbWeight=1 PerfScore 7.50
+                      ;; size=28 bbWeight=1 PerfScore 7.00
 G_M54395_IG06:        ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20]
             mov     x0, x21
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=0.50 PerfScore 0.25
 G_M54395_IG07:        ; bbWeight=0.50, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x40
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x30
             ret     lr
-                        ;; size=16 bbWeight=0.50 PerfScore 2.00
+                       ;; size=16 bbWeight=0.50 PerfScore 2.50
 G_M54395_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0] +[x20]
-            mov     x0, x22
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M54395_IG10
+                       ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M54395_IG09:        ; bbWeight=0.40, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            b       G_M54395_IG11
+                       ;; size=4 bbWeight=0.40 PerfScore 0.40
+G_M54395_IG10:        ; bbWeight=0.10, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.10 PerfScore 0.30
+G_M54395_IG11:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
             mov     x1, x21
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for System.Linq.Enumerable:IsEmptyArray[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte
@@ -92,65 +103,65 @@ G_M54395_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=300
             ldr     x2, [x2]
             blr     x2
             ; gcrRegs -[x1]
-            cbz     w0, G_M54395_IG10
+            cbz     w0, G_M54395_IG13
             mov     x0, x20
             ; gcrRegs +[x0]
-                      ;; size=36 bbWeight=0.50 PerfScore 4.00
-G_M54395_IG09:        ; bbWeight=0.50, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x40
+                      ;; size=32 bbWeight=0.50 PerfScore 3.75
+G_M54395_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x30
             ret     lr
-                        ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M54395_IG10:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
+                     ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M54395_IG13:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0]
             ldr     x0, [x19, #0x38]
             ldr     x1, [x0, #0x08]
             cmp     x1, #24
-            ble     G_M54395_IG13
+            ble     G_M54395_IG16
                       ;; size=16 bbWeight=0.50 PerfScore 3.75
-G_M54395_IG11:        ; bbWeight=0.40, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M54395_IG14:        ; bbWeight=0.40, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x0, #0x18]
-            cbz     x0, G_M54395_IG13
+            cbz     x0, G_M54395_IG16
                         ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M54395_IG12:        ; bbWeight=0.32, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
-            b       G_M54395_IG14
+G_M54395_IG15:        ; bbWeight=0.32, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            b       G_M54395_IG17
                       ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M54395_IG13:        ; bbWeight=0.18, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M54395_IG16:        ; bbWeight=0.18, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.18 PerfScore 0.54
-G_M54395_IG14:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M54395_IG17:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
             mov     x1, x20
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_ISINSTANCEOFCLASS
+            bl      CORINFO_HELP_ISINSTANCEOFARRAY
             ; gcrRegs -[x1] +[x0]
-            cbnz    x0, G_M54395_IG20
+            cbnz    x0, G_M54395_IG23
             ldr     x0, [x19, #0x38]
             ; gcrRegs -[x0]
             ldr     x1, [x0, #0x08]
             cmp     x1, #32
-            ble     G_M54395_IG17
+            ble     G_M54395_IG20
                       ;; size=28 bbWeight=0.50 PerfScore 5.00
-G_M54395_IG15:        ; bbWeight=0.40, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M54395_IG18:        ; bbWeight=0.40, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x0, #0x20]
-            cbz     x0, G_M54395_IG17
+            cbz     x0, G_M54395_IG20
                         ;; size=8 bbWeight=0.40 PerfScore 1.60
-G_M54395_IG16:        ; bbWeight=0.32, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
-            b       G_M54395_IG18
+G_M54395_IG19:        ; bbWeight=0.32, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            b       G_M54395_IG21
                       ;; size=4 bbWeight=0.32 PerfScore 0.32
-G_M54395_IG17:        ; bbWeight=0.18, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M54395_IG20:        ; bbWeight=0.18, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.18 PerfScore 0.54
-G_M54395_IG18:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M54395_IG21:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             mov     x19, x0
             ; gcrRegs +[x19]
@@ -174,13 +185,13 @@ G_M54395_IG18:        ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=000
             mov     x0, x19
             ; gcrRegs +[x0]
                        ;; size=44 bbWeight=0.50 PerfScore 4.00
-G_M54395_IG19:        ; bbWeight=0.50, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x40
+G_M54395_IG22:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x30
             ret     lr
-                        ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M54395_IG20:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
+                       ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M54395_IG23:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x19] +[x21]
             mov     x1, x21
             ; gcrRegs +[x1]
@@ -188,13 +199,13 @@ G_M54395_IG20:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200
             ldr     x2, [x2, #0x58]
             ldr     x2, [x2, #0x10]
                        ;; size=16 bbWeight=0.50 PerfScore 4.75
-G_M54395_IG21:        ; bbWeight=0.50, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x40
+G_M54395_IG24:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x30
             br      x2
-                        ;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M54395_IG22:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                      ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M54395_IG25:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...
  
  
libraries.pmi.windows.arm64.checked.mch
-44 (-23.91%) : 6035.dasm - System.ValueTuple2[System.__Canon,System.Nullable1[int]]:GetHashCode():int:this (FullOpts)
@@ -10,30 +10,30 @@
 ;
 ;  V00 this         [V00,T00] (  6,  5.50)   byref  ->  x19         this single-def
 ;* V01 TypeCtx      [V01    ] (  0,  0   )    long  ->  zero-ref    single-def
-;  V02 loc0         [V02    ] (  4,  2.50)     ref  ->  [fp+0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
-;  V03 loc1         [V03    ] (  5,  3.50)  struct ( 8) [fp+0x18]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+;  V02 loc0         [V02    ] (  4,  2.50)     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
+;* V03 loc1         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
-;  V06 tmp2         [V06,T04] (  3,  2   )   byref  ->   x0        
-;  V07 tmp3         [V07,T05] (  3,  2   )     int  ->   x0        
-;  V08 tmp4         [V08,T01] (  3,  5   )   byref  ->   x1         single-def "impAppendStmt"
+;  V06 tmp2         [V06,T03] (  3,  2   )   byref  ->   x0        
+;  V07 tmp3         [V07,T04] (  3,  2   )     int  ->   x0        
+;  V08 tmp4         [V08,T01] (  3,  4.03)   byref  ->   x1         single-def "impAppendStmt"
 ;* V09 tmp5         [V09    ] (  0,  0   )     int  ->  zero-ref   
-;  V10 tmp6         [V10,T03] (  4,  2.02)   byref  ->   x2        
+;* V10 tmp6         [V10    ] (  0,  0   )   byref  ->  zero-ref    single-def
 ;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref   
-;  V12 tmp8         [V12,T06] (  3,  2   )     int  ->   x1        
-;  V13 tmp9         [V13,T07] (  3,  1   )     int  ->   x1         "Inline return value spill temp"
+;* V12 tmp8         [V12    ] (  0,  0   )     int  ->  zero-ref   
+;  V13 tmp9         [V13,T05] (  3,  1.50)     int  ->   x1         "Inline return value spill temp"
 ;* V14 tmp10        [V14    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;  V15 tmp11        [V15    ] (  5,  3.50)   ubyte  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03.hasValue (fldOffset=0x0)" P-DEP
-;  V16 tmp12        [V16    ] (  3,  2   )     int  ->  [fp+0x1C]  do-not-enreg[X] addr-exposed "field V03.value (fldOffset=0x4)" P-DEP
+;* V15 tmp11        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V16 tmp12        [V16    ] (  0,  0   )     int  ->  zero-ref    "field V03.value (fldOffset=0x4)" P-INDEP
 ;  V17 tmp13        [V17,T02] (  3,  3   )     ref  ->   x0         single-def "argument with side effect"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M34277_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
-            str     x19, [sp, #0x28]
+            stp     fp, lr, [sp, #-0x20]!
+            str     x19, [sp, #0x18]
             mov     fp, sp
-            str     xzr, [fp, #0x20]   // [V02 loc0]
+            str     xzr, [fp, #0x10] // [V02 loc0]
             mov     x19, x0
             ; byrRegs +[x19]
                        ;; size=20 bbWeight=1 PerfScore 4.00
@@ -41,7 +41,7 @@ G_M34277_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
             ldrsb   wzr, [x19]
             mov     x0, x19
             ; byrRegs +[x0]
-            ldr     x1, [fp, #0x20]   // [V02 loc0]
+            ldr     x1, [fp, #0x10]  // [V02 loc0]
             ; gcrRegs +[x1]
             cbnz    x1, G_M34277_IG04
                        ;; size=16 bbWeight=1 PerfScore 6.50
@@ -50,11 +50,11 @@ G_M34277_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19},
             ; byrRegs -[x0]
             ldr     x0, [x19]
             ; gcrRegs +[x0]
-            str     x0, [fp, #0x20]   // [V02 loc0]
-            add     x0, fp, #32    // [V02 loc0]
+            str     x0, [fp, #0x10]  // [V02 loc0]
+            add     x0, fp, #16    // [V02 loc0]
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
-            ldr     x1, [fp, #0x20]   // [V02 loc0]
+            ldr     x1, [fp, #0x10]  // [V02 loc0]
             ; gcrRegs +[x1]
             cbnz    x1, G_M34277_IG04
             mov     w0, wzr
@@ -76,52 +76,33 @@ G_M34277_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80001 {x0 x1
 G_M34277_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
             add     x1, x19, #8
             ; byrRegs +[x1]
-            str     xzr, [fp, #0x18]  // [V03 loc1]
-            mov     x2, x1
-            ; byrRegs +[x2]
-            ldrb    w3, [fp, #0x18]    // [V15 tmp11]
-            cbnz    w3, G_M34277_IG07
-                       ;; size=20 bbWeight=1 PerfScore 5.00
-G_M34277_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
-            ; byrRegs -[x2 x19]
-            ldr     x2, [x1]
-            str     x2, [fp, #0x18]    // [V03 loc1]
-            add     x2, fp, #24    // [V03 loc1]
-            ; byrRegs +[x2]
-            ldrb    w1, [fp, #0x18]    // [V15 tmp11]
-            ; byrRegs -[x1]
-            cbnz    w1, G_M34277_IG07
+            ldrb    w2, [x1]
+            cbnz    w2, G_M34277_IG07
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M34277_IG06:        ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; byrRegs -[x1 x19]
             mov     w1, wzr
-            b       G_M34277_IG10
-                       ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M34277_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref, isz
-            ldrb    w1, [x2]
-            cbnz    w1, G_M34277_IG09
-                       ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M34277_IG08:        ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; byrRegs -[x2]
-            mov     w1, wzr
-            b       G_M34277_IG10
+            b       G_M34277_IG08
                        ;; size=8 bbWeight=0.48 PerfScore 0.73
-G_M34277_IG09:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
-            ; byrRegs +[x2]
-            ldr     w1, [x2, #0x04]
+G_M34277_IG07:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
+            ; byrRegs +[x1]
+            ldr     w1, [x1, #0x04]
+            ; byrRegs -[x1]
                         ;; size=4 bbWeight=0.02 PerfScore 0.05
-G_M34277_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; byrRegs -[x2]
+G_M34277_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             ldr     x2, [x2]
             blr     x2
                        ;; size=20 bbWeight=1 PerfScore 5.50
-G_M34277_IG11:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x19, [sp, #0x28]
-            ldp     fp, lr, [sp], #0x30
+G_M34277_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x19, [sp, #0x18]
+            ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 184, prolog size 16, PerfScore 43.27, instruction count 46, allocated bytes for code 184 (MethodHash=4c2b7a1a) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
+; Total bytes of code 140, prolog size 16, PerfScore 36.28, instruction count 35, allocated bytes for code 140 (MethodHash=4c2b7a1a) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -132,7 +113,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 46 (0x0002e) Actual length = 184 (0x0000b8)
+  Function Length   : 35 (0x00023) Actual length = 140 (0x00008c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -140,8 +121,8 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 05       save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    D0 03       save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
+    83          save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
     E4          end
     E4          end
     E4          end
  
-44 (-17.74%) : 6039.dasm - System.ValueTuple2[System.__Canon,System.Nullable1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
@@ -11,22 +11,22 @@
 ;  V00 this         [V00,T00] (  6,  5.50)   byref  ->  x19         this single-def
 ;* V01 TypeCtx      [V01    ] (  0,  0   )    long  ->  zero-ref    single-def
 ;  V02 loc0         [V02    ] (  4,  2.50)     ref  ->  [fp+0x18]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
-;  V03 loc1         [V03    ] (  5,  3.50)  struct ( 8) [fp+0x10]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+;* V03 loc1         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
-;  V06 tmp2         [V06,T04] (  3,  2   )   byref  ->   x0        
-;  V07 tmp3         [V07,T05] (  3,  2   )     ref  ->  x20        
+;  V06 tmp2         [V06,T03] (  3,  2   )   byref  ->   x0        
+;  V07 tmp3         [V07,T04] (  3,  2   )     ref  ->  x20        
 ;  V08 tmp4         [V08,T01] (  3,  5   )   byref  ->   x0         single-def "impAppendStmt"
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V11 tmp7         [V11,T03] (  4,  2.50)   byref  ->   x1        
+;* V11 tmp7         [V11    ] (  0,  0   )   byref  ->  zero-ref    single-def
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref   
-;  V14 tmp10        [V14,T06] (  3,  2   )     ref  ->   x2        
-;  V15 tmp11        [V15,T07] (  3,  1.50)     ref  ->   x2         class-hnd "Inline return value spill temp" <System.String>
+;* V14 tmp10        [V14    ] (  0,  0   )     ref  ->  zero-ref   
+;  V15 tmp11        [V15,T05] (  3,  2   )     ref  ->   x2         class-hnd "Inline return value spill temp" <System.String>
 ;* V16 tmp12        [V16    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;  V17 tmp13        [V17    ] (  5,  3.50)   ubyte  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03.hasValue (fldOffset=0x0)" P-DEP
-;  V18 tmp14        [V18    ] (  3,  2   )     int  ->  [fp+0x14]  do-not-enreg[X] addr-exposed "field V03.value (fldOffset=0x4)" P-DEP
+;* V17 tmp13        [V17    ] (  0,  0   )   ubyte  ->  zero-ref    "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V18 tmp14        [V18    ] (  0,  0   )     int  ->  zero-ref    "field V03.value (fldOffset=0x4)" P-INDEP
 ;  V19 tmp15        [V19,T02] (  3,  3   )     ref  ->   x0         single-def "argument with side effect"
 ;
 ; Lcl frame size = 16
@@ -79,38 +79,21 @@ G_M39544_IG05:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19
             ; gcrRegs -[x0]
             add     x0, x19, #8
             ; byrRegs +[x0]
-            str     xzr, [fp, #0x10]  // [V03 loc1]
-            mov     x1, x0
-            ; byrRegs +[x1]
-            ldrb    w2, [fp, #0x10]    // [V17 tmp13]
-            cbnz    w2, G_M39544_IG07
-                       ;; size=20 bbWeight=1 PerfScore 5.00
-G_M39544_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref, isz
-            ; byrRegs -[x1 x19]
-            ldr     x1, [x0]
-            str     x1, [fp, #0x10]    // [V03 loc1]
-            add     x1, fp, #16    // [V03 loc1]
-            ; byrRegs +[x1]
-            ldrb    w0, [fp, #0x10]    // [V17 tmp13]
-            ; byrRegs -[x0]
-            cbnz    w0, G_M39544_IG07
-            mov     x2, xzr
-            ; gcrRegs +[x2]
-            b       G_M39544_IG09
-                       ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M39544_IG07:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0002 {x1}, byref, isz
-            ; gcrRegs -[x2]
-            ldrb    w0, [x1]
-            cbnz    w0, G_M39544_IG08
+            ldrb    w1, [x0]
+            cbnz    w1, G_M39544_IG07
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M39544_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            ; byrRegs -[x0 x19]
             movz    x2, #8
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
-            b       G_M39544_IG09
-                       ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M39544_IG08:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0002 {x1}, byref
-            ldr     w0, [x1, #0x04]
+            b       G_M39544_IG08
+                       ;; size=16 bbWeight=0.50 PerfScore 1.25
+G_M39544_IG07:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0001 {x0}, byref
+            ; byrRegs +[x0]
+            ldr     w0, [x0, #0x04]
+            ; byrRegs -[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Number:Int32ToDecStr(int):System.String
-            ; byrRegs -[x1]
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
@@ -119,7 +102,7 @@ G_M39544_IG08:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0002 {x
             mov     x2, x0
             ; gcrRegs +[x2]
                        ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M39544_IG09:        ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref
+G_M39544_IG08:        ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -136,13 +119,13 @@ G_M39544_IG09:        ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}
             blr     x4
             ; gcrRegs -[x2 x20]
                        ;; size=48 bbWeight=1 PerfScore 9.00
-G_M39544_IG10:        ; bbWeight=1, epilog, nogc, extend
+G_M39544_IG09:        ; bbWeight=1, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 3.00
 
-; Total bytes of code 248, prolog size 16, PerfScore 51.00, instruction count 62, allocated bytes for code 248 (MethodHash=50db6587) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
+; Total bytes of code 204, prolog size 16, PerfScore 44.00, instruction count 51, allocated bytes for code 204 (MethodHash=50db6587) for method System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -153,7 +136,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 62 (0x0003e) Actual length = 248 (0x0000f8)
+  Function Length   : 51 (0x00033) Actual length = 204 (0x0000cc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-40 (-16.95%) : 3372.dasm - System.HashCode:Combine[System.__Canon,System.Nullable1[int]](System.__Canon,System.Nullable1[int]):int (FullOpts)
@@ -9,40 +9,40 @@
 ; Final local variable assignments
 ;
 ;* V00 TypeCtx      [V00    ] (  0,  0   )    long  ->  zero-ref    single-def
-;  V01 arg0         [V01    ] (  3,  3   )     ref  ->  [fp+0x30]  do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg1         [V02    ] (  3,  3   )  struct ( 8) [fp+0x28]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Nullable`1[int]>
+;  V01 arg0         [V01    ] (  3,  3   )     ref  ->  [fp+0x20]  do-not-enreg[X] addr-exposed ld-addr-op class-hnd single-def <System.__Canon>
+;  V02 arg1         [V02    ] (  3,  3   )  struct ( 8) [fp+0x18]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Nullable`1[int]>
 ;* V03 loc0         [V03    ] (  0,  0   )     int  ->  zero-ref   
 ;* V04 loc1         [V04    ] (  0,  0   )     int  ->  zero-ref   
 ;  V05 loc2         [V05,T03] (  3,  3   )     int  ->   x1        
-;  V06 loc3         [V06    ] (  4,  2.50)     ref  ->  [fp+0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
-;  V07 loc4         [V07    ] (  5,  3.50)  struct ( 8) [fp+0x18]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
+;  V06 loc3         [V06    ] (  4,  2.50)     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
+;* V07 loc4         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V09 tmp1         [V09,T06] (  4,  2.50)   byref  ->   x0        
+;  V09 tmp1         [V09,T05] (  4,  2.50)   byref  ->   x0        
 ;  V10 tmp2         [V10,T07] (  3,  2   )     int  ->  x19        
-;  V11 tmp3         [V11,T05] (  5,  2.52)   byref  ->   x0        
-;  V12 tmp4         [V12,T08] (  3,  2   )     int  ->   x1        
-;  V13 tmp5         [V13,T09] (  3,  1   )     int  ->   x1         "Inline return value spill temp"
+;  V11 tmp3         [V11,T06] (  3,  2.02)   byref  ->   x0         single-def
+;* V12 tmp4         [V12    ] (  0,  0   )     int  ->  zero-ref   
+;  V13 tmp5         [V13,T08] (  3,  1.50)     int  ->   x1         "Inline return value spill temp"
 ;* V14 tmp6         [V14    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V15 tmp7         [V15,T00] (  6, 12   )     int  ->   x1         "Inlining Arg"
-;  V16 tmp8         [V16    ] (  5,  3.50)   ubyte  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V07.hasValue (fldOffset=0x0)" P-DEP
-;  V17 tmp9         [V17    ] (  3,  2   )     int  ->  [fp+0x1C]  do-not-enreg[X] addr-exposed "field V07.value (fldOffset=0x4)" P-DEP
+;* V16 tmp8         [V16    ] (  0,  0   )   ubyte  ->  zero-ref    "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V17 tmp9         [V17    ] (  0,  0   )     int  ->  zero-ref    "field V07.value (fldOffset=0x4)" P-INDEP
 ;  V18 tmp10        [V18,T02] (  3,  3   )     ref  ->   x0         single-def "argument with side effect"
 ;  V19 cse0         [V19,T01] (  4,  4   )     int  ->   x0         "CSE - aggressive"
 ;  V20 cse1         [V20,T04] (  3,  3   )     int  ->   x3         "CSE - aggressive"
 ;
-; Lcl frame size = 40
+; Lcl frame size = 24
 
 G_M60379_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x40]!
-            str     x19, [sp, #0x38]
+            stp     fp, lr, [sp, #-0x30]!
+            str     x19, [sp, #0x28]
             mov     fp, sp
-            str     xzr, [fp, #0x20]   // [V06 loc3]
-            stp     x2, x1, [fp, #0x28]    // [V02 arg1], [V01 arg0]
+            str     xzr, [fp, #0x10] // [V06 loc3]
+            stp     x2, x1, [fp, #0x18]    // [V02 arg1], [V01 arg0]
                        ;; size=20 bbWeight=1 PerfScore 4.50
 G_M60379_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            add     x0, fp, #48  // [V01 arg0]
+            add     x0, fp, #32  // [V01 arg0]
             ; byrRegs +[x0]
-            ldr     x1, [fp, #0x20]   // [V06 loc3]
+            ldr     x1, [fp, #0x10]  // [V06 loc3]
             ; gcrRegs +[x1]
             cbnz    x1, G_M60379_IG04
                        ;; size=12 bbWeight=1 PerfScore 3.50
@@ -51,11 +51,11 @@ G_M60379_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, b
             ldr     x0, [x0]
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
-            str     x0, [fp, #0x20]   // [V06 loc3]
-            add     x0, fp, #32    // [V06 loc3]
+            str     x0, [fp, #0x10]  // [V06 loc3]
+            add     x0, fp, #16    // [V06 loc3]
             ; gcrRegs -[x0]
             ; byrRegs +[x0]
-            ldr     x1, [fp, #0x20]   // [V06 loc3]
+            ldr     x1, [fp, #0x10]  // [V06 loc3]
             ; gcrRegs +[x1]
             cbnz    x1, G_M60379_IG04
             mov     w19, wzr
@@ -74,37 +74,21 @@ G_M60379_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, b
             sxtw    w19, w0
                        ;; size=24 bbWeight=0.50 PerfScore 6.75
 G_M60379_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            str     xzr, [fp, #0x18] // [V07 loc4]
-            add     x0, fp, #40    // [V02 arg1]
+            add     x0, fp, #24  // [V02 arg1]
             ; byrRegs +[x0]
-            ldrb    w1, [fp, #0x18]   // [V16 tmp8]
-            cbnz    w1, G_M60379_IG07
-                       ;; size=16 bbWeight=1 PerfScore 4.50
-G_M60379_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
-            ldr     x0, [x0]
-            ; byrRegs -[x0]
-            str     x0, [fp, #0x18]    // [V07 loc4]
-            add     x0, fp, #24    // [V07 loc4]
-            ; byrRegs +[x0]
-            ldrb    w1, [fp, #0x18]    // [V16 tmp8]
-            cbnz    w1, G_M60379_IG07
-            mov     w1, wzr
-            b       G_M60379_IG10
-                       ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M60379_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
             ldrb    w1, [x0]
-            cbnz    w1, G_M60379_IG09
-                       ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M60379_IG08:        ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            cbnz    w1, G_M60379_IG07
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M60379_IG06:        ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; byrRegs -[x0]
             mov     w1, wzr
-            b       G_M60379_IG10
+            b       G_M60379_IG08
                       ;; size=8 bbWeight=0.48 PerfScore 0.73
-G_M60379_IG09:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M60379_IG07:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
             ; byrRegs +[x0]
             ldr     w1, [x0, #0x04]
                        ;; size=4 bbWeight=0.02 PerfScore 0.05
-G_M60379_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M60379_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; byrRegs -[x0]
             movz    w0, #0xD1FFAB1E
             movk    w0, #0xD1FFAB1E LSL #16
@@ -126,13 +110,13 @@ G_M60379_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mul     w1, w1, w0
             eor     w0, w1, w1,  LSR #16
                        ;; size=76 bbWeight=1 PerfScore 21.00
-G_M60379_IG11:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x19, [sp, #0x38]
-            ldp     fp, lr, [sp], #0x40
+G_M60379_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x19, [sp, #0x28]
+            ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=12 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 236, prolog size 16, PerfScore 56.03, instruction count 59, allocated bytes for code 236 (MethodHash=6b5b1424) for method System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
+; Total bytes of code 196, prolog size 16, PerfScore 49.53, instruction count 49, allocated bytes for code 196 (MethodHash=6b5b1424) for method System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -143,7 +127,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 59 (0x0003b) Actual length = 236 (0x0000ec)
+  Function Length   : 49 (0x00031) Actual length = 196 (0x0000c4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -151,8 +135,8 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 07       save_reg X#0 Z#7 (0x07); str x19, [sp, #56]
-    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    D0 05       save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
+    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
     E4          end
  
+48 (+16.22%) : 23157.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIterator[System.Canon,System.Nullable1[int]](Microsoft.FSharp.Collections.MapTree2[System.Canon,System.Nullable1[int]]):Microsoft.FSharp.Collections.MapTreeModule+MapIterator2[System.__Canon,System.Nullable`1[int]] (FullOpts)
@@ -8,38 +8,38 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  9,  6.92)    long  ->  x19         single-def
+;  V00 TypeCtx      [V00,T00] ( 11,  8.12)    long  ->  x19         single-def
 ;  V01 arg0         [V01,T06] (  3,  3   )     ref  ->  x20         class-hnd single-def <Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T16] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V04 tmp2         [V04,T02] (  3,  6   )    long  ->  x21         "spilling helperCall"
-;  V05 tmp3         [V05,T09] (  3,  4   )    long  ->  x22         "spilling helperCall"
+;  V03 tmp1         [V03,T09] (  3,  4   )    long  ->  x21         "spilling helperCall"
+;  V04 tmp2         [V04,T10] (  3,  4   )    long  ->  x22         "spilling helperCall"
+;  V05 tmp3         [V05,T11] (  3,  4   )    long  ->  x23         "spilling helperCall"
 ;  V06 tmp4         [V06,T01] (  4,  8   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.MapTreeModule+MapIterator`2[System.__Canon,System.Nullable`1[int]]>
 ;* V07 tmp5         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp6         [V08,T12] (  2,  4   )     ref  ->  x15         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V09 tmp7         [V09,T13] (  2,  4   )     ref  ->   x2         single-def "argument with side effect"
-;  V10 tmp8         [V10,T14] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
-;  V11 cse0         [V11,T15] (  2,  2   )    long  ->  x21         "CSE - aggressive"
-;  V12 rat0         [V12,T10] (  3,  4   )    long  ->  x21         "runtime lookup"
-;  V13 rat1         [V13,T03] (  3,  5.60)    long  ->  x21         "fgMakeTemp is creating a new local variable"
-;  V14 rat2         [V14,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V15 rat3         [V15,T07] (  3,  4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;  V16 rat4         [V16,T11] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V17 rat5         [V17,T05] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V18 rat6         [V18,T08] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V08 tmp6         [V08,T13] (  2,  4   )     ref  ->  x15         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V09 tmp7         [V09,T14] (  2,  4   )     ref  ->   x2         single-def "argument with side effect"
+;  V10 tmp8         [V10,T15] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
+;  V11 rat0         [V11,T02] (  3,  5.60)    long  ->  x21         "fgMakeTemp is creating a new local variable"
+;  V12 rat1         [V12,T03] (  3,  5.60)    long  ->  x22         "fgMakeTemp is creating a new local variable"
+;  V13 rat2         [V13,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V14 rat3         [V14,T07] (  3,  4.48)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V15 rat4         [V15,T12] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V16 rat5         [V16,T05] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V17 rat6         [V17,T08] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M59459_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x20]
-            stp     x21, x22, [sp, #0x30]
+            stp     x19, x20, [sp, #0x18]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-            str     x0, [fp, #0x18]
+            str     x0, [fp, #0x10]
             mov     x19, x0
             mov     x20, x1
             ; gcrRegs +[x20]
-                     ;; size=28 bbWeight=1 PerfScore 5.50
+                      ;; size=32 bbWeight=1 PerfScore 6.50
 G_M59459_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x38]
             ldr     x21, [x0, #0x18]
@@ -53,52 +53,68 @@ G_M59459_IG04:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x21, x0
                        ;; size=24 bbWeight=0.20 PerfScore 0.70
 G_M59459_IG05:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x38]
-            ldr     x1, [x0, #0x10]
-            cmp     x1, #32
-            ble     G_M59459_IG08
-                       ;; size=16 bbWeight=1 PerfScore 7.50
-G_M59459_IG06:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x0, #0x20]
-            cbz     x22, G_M59459_IG08
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M59459_IG07:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M59459_IG09
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M59459_IG08:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            ldr     x22, [x0, #0x18]
+            cbz     x22, G_M59459_IG07
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M59459_IG06:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M59459_IG08
+                       ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M59459_IG07:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x22, x0
+                       ;; size=24 bbWeight=0.20 PerfScore 0.70
+G_M59459_IG08:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x10]
+            cmp     x1, #32
+            ble     G_M59459_IG11
+                       ;; size=16 bbWeight=1 PerfScore 7.50
+G_M59459_IG09:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x23, [x0, #0x20]
+            cbz     x23, G_M59459_IG11
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M59459_IG10:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M59459_IG12
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M59459_IG11:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            mov     x23, x0
                         ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M59459_IG09:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M59459_IG12:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x38]
             ldr     x1, [x0, #0x10]
             cmp     x1, #40
-            ble     G_M59459_IG12
+            ble     G_M59459_IG15
                       ;; size=16 bbWeight=1 PerfScore 7.50
-G_M59459_IG10:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M59459_IG13:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x0, #0x28]
-            cbz     x0, G_M59459_IG12
+            cbz     x0, G_M59459_IG15
                        ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M59459_IG11:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M59459_IG13
+G_M59459_IG14:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M59459_IG16
                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M59459_IG12:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M59459_IG15:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M59459_IG13:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M59459_IG16:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             mov     x19, x0
             ; gcrRegs +[x19]
@@ -114,7 +130,7 @@ G_M59459_IG13:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
             ; gcrRegs +[x2]
             mov     x1, x20
             ; gcrRegs +[x1]
-            mov     x0, x21
+            mov     x0, x22
             ; gcrRegs -[x0]
             movz    x3, #0xD1FFAB1E      // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
             movk    x3, #0xD1FFAB1E LSL #16
@@ -124,7 +140,7 @@ G_M59459_IG13:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
             ; gcrRegs -[x1-x2 x20] +[x0]
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x0, x22
+            mov     x0, x23
             ; gcrRegs -[x0]
             movz    x2, #0xD1FFAB1E      // code for Microsoft.FSharp.Collections.MapTreeModule:collapseLHS[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
             movk    x2, #0xD1FFAB1E LSL #16
@@ -143,14 +159,15 @@ G_M59459_IG13:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
             mov     x0, x19
             ; gcrRegs +[x0]
                        ;; size=112 bbWeight=1 PerfScore 24.50
-G_M59459_IG14:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
+G_M59459_IG17:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 4.00
+                      ;; size=20 bbWeight=1 PerfScore 6.00
 
-; Total bytes of code 296, prolog size 20, PerfScore 67.52, instruction count 74, allocated bytes for code 296 (MethodHash=953017bc) for method Microsoft.FSharp.Collections.MapTreeModule:mkIterator[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Collections.MapTreeModule+MapIterator`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
+; Total bytes of code 344, prolog size 24, PerfScore 79.02, instruction count 86, allocated bytes for code 344 (MethodHash=953017bc) for method Microsoft.FSharp.Collections.MapTreeModule:mkIterator[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Collections.MapTreeModule+MapIterator`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -161,7 +178,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 74 (0x0004a) Actual length = 296 (0x000128)
+  Function Length   : 86 (0x00056) Actual length = 344 (0x000158)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -169,10 +186,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
-    E4          end
-    E4          end
 
  
+48 (+16.22%) : 22784.dasm - Microsoft.FSharp.Collections.SetTreeModule:mkIteratorSystem.__Canon:Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1System.__Canon
@@ -8,38 +8,38 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  9,  6.92)    long  ->  x19         single-def
+;  V00 TypeCtx      [V00,T00] ( 11,  8.12)    long  ->  x19         single-def
 ;  V01 arg0         [V01,T06] (  3,  3   )     ref  ->  x20         class-hnd single-def <Microsoft.FSharp.Collections.SetTree`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T16] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V04 tmp2         [V04,T02] (  3,  6   )    long  ->  x21         "spilling helperCall"
-;  V05 tmp3         [V05,T09] (  3,  4   )    long  ->  x22         "spilling helperCall"
+;  V03 tmp1         [V03,T09] (  3,  4   )    long  ->  x21         "spilling helperCall"
+;  V04 tmp2         [V04,T10] (  3,  4   )    long  ->  x22         "spilling helperCall"
+;  V05 tmp3         [V05,T11] (  3,  4   )    long  ->  x23         "spilling helperCall"
 ;  V06 tmp4         [V06,T01] (  4,  8   )     ref  ->  x19         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon]>
 ;* V07 tmp5         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V08 tmp6         [V08,T12] (  2,  4   )     ref  ->  x15         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V09 tmp7         [V09,T13] (  2,  4   )     ref  ->   x2         single-def "argument with side effect"
-;  V10 tmp8         [V10,T14] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
-;  V11 cse0         [V11,T15] (  2,  2   )    long  ->  x21         "CSE - aggressive"
-;  V12 rat0         [V12,T10] (  3,  4   )    long  ->  x21         "runtime lookup"
-;  V13 rat1         [V13,T03] (  3,  5.60)    long  ->  x21         "fgMakeTemp is creating a new local variable"
-;  V14 rat2         [V14,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V15 rat3         [V15,T07] (  3,  4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;  V16 rat4         [V16,T11] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V17 rat5         [V17,T05] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V18 rat6         [V18,T08] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V08 tmp6         [V08,T13] (  2,  4   )     ref  ->  x15         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V09 tmp7         [V09,T14] (  2,  4   )     ref  ->   x2         single-def "argument with side effect"
+;  V10 tmp8         [V10,T15] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
+;  V11 rat0         [V11,T02] (  3,  5.60)    long  ->  x21         "fgMakeTemp is creating a new local variable"
+;  V12 rat1         [V12,T03] (  3,  5.60)    long  ->  x22         "fgMakeTemp is creating a new local variable"
+;  V13 rat2         [V13,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V14 rat3         [V14,T07] (  3,  4.48)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V15 rat4         [V15,T12] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V16 rat5         [V16,T05] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V17 rat6         [V17,T08] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M4881_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x20]
-            stp     x21, x22, [sp, #0x30]
+            stp     x19, x20, [sp, #0x18]
+            stp     x21, x22, [sp, #0x28]
+            str     x23, [sp, #0x38]
             mov     fp, sp
-            str     x0, [fp, #0x18]
+            str     x0, [fp, #0x10]
             mov     x19, x0
             mov     x20, x1
             ; gcrRegs +[x20]
-                     ;; size=28 bbWeight=1 PerfScore 5.50
+                      ;; size=32 bbWeight=1 PerfScore 6.50
 G_M4881_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x38]
             ldr     x21, [x0, #0x10]
@@ -53,52 +53,68 @@ G_M4881_IG04:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {},
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x21, x0
                        ;; size=24 bbWeight=0.20 PerfScore 0.70
 G_M4881_IG05:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x38]
-            ldr     x1, [x0, #0x08]
-            cmp     x1, #24
-            ble     G_M4881_IG08
-                       ;; size=16 bbWeight=1 PerfScore 7.50
-G_M4881_IG06:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x22, [x0, #0x18]
-            cbz     x22, G_M4881_IG08
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M4881_IG07:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M4881_IG09
-                       ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M4881_IG08:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            ldr     x22, [x0, #0x10]
+            cbz     x22, G_M4881_IG07
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M4881_IG06:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M4881_IG08
+                       ;; size=4 bbWeight=0.80 PerfScore 0.80
+G_M4881_IG07:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x22, x0
+                       ;; size=24 bbWeight=0.20 PerfScore 0.70
+G_M4881_IG08:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M4881_IG11
+                       ;; size=16 bbWeight=1 PerfScore 7.50
+G_M4881_IG09:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x23, [x0, #0x18]
+            cbz     x23, G_M4881_IG11
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M4881_IG10:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M4881_IG12
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M4881_IG11:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            mov     x23, x0
                         ;; size=24 bbWeight=0.36 PerfScore 1.26
-G_M4881_IG09:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M4881_IG12:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19, #0x38]
             ldr     x1, [x0, #0x08]
             cmp     x1, #32
-            ble     G_M4881_IG12
+            ble     G_M4881_IG15
                         ;; size=16 bbWeight=1 PerfScore 7.50
-G_M4881_IG10:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M4881_IG13:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x0, #0x20]
-            cbz     x0, G_M4881_IG12
+            cbz     x0, G_M4881_IG15
                        ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M4881_IG11:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M4881_IG13
+G_M4881_IG14:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M4881_IG16
                        ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M4881_IG12:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M4881_IG15:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M4881_IG13:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M4881_IG16:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             mov     x19, x0
             ; gcrRegs +[x19]
@@ -114,7 +130,7 @@ G_M4881_IG13:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by
             ; gcrRegs +[x2]
             mov     x1, x20
             ; gcrRegs +[x1]
-            mov     x0, x21
+            mov     x0, x22
             ; gcrRegs -[x0]
             movz    x3, #0xD1FFAB1E      // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:Cons(System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
             movk    x3, #0xD1FFAB1E LSL #16
@@ -124,7 +140,7 @@ G_M4881_IG13:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by
             ; gcrRegs -[x1-x2 x20] +[x0]
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x0, x22
+            mov     x0, x23
             ; gcrRegs -[x0]
             movz    x2, #0xD1FFAB1E      // code for Microsoft.FSharp.Collections.SetTreeModule:collapseLHS[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
             movk    x2, #0xD1FFAB1E LSL #16
@@ -143,14 +159,15 @@ G_M4881_IG13:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, by
             mov     x0, x19
             ; gcrRegs +[x0]
                        ;; size=112 bbWeight=1 PerfScore 24.50
-G_M4881_IG14:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x21, x22, [sp, #0x30]
-            ldp     x19, x20, [sp, #0x20]
+G_M4881_IG17:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x23, [sp, #0x38]
+            ldp     x21, x22, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x40
             ret     lr
-                       ;; size=16 bbWeight=1 PerfScore 4.00
+                      ;; size=20 bbWeight=1 PerfScore 6.00
 
-; Total bytes of code 296, prolog size 20, PerfScore 67.52, instruction count 74, allocated bytes for code 296 (MethodHash=15a1ecee) for method Microsoft.FSharp.Collections.SetTreeModule:mkIterator[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon] (FullOpts)
+; Total bytes of code 344, prolog size 24, PerfScore 79.02, instruction count 86, allocated bytes for code 344 (MethodHash=15a1ecee) for method Microsoft.FSharp.Collections.SetTreeModule:mkIterator[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -161,7 +178,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 74 (0x0004a) Actual length = 296 (0x000128)
+  Function Length   : 86 (0x00056) Actual length = 344 (0x000158)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -169,10 +186,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
-    E4          end
-    E4          end
 
  
+48 (+18.75%) : 19488.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.Canon,System.Nullable1[int]](Microsoft.FSharp.Control.AsyncActivation1[System.Canon],System.Nullable1[int],Microsoft.FSharp.Core.FSharpFunc2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
@@ -8,24 +8,27 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.20)    long  ->  x19         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  4.20)    long  ->  [fp+0x28]  EH-live single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]>
-;  V02 arg1         [V02,T03] (  3,  3   )  struct ( 8) [fp+0x28]  do-not-enreg[S] single-def <System.Nullable`1[int]>
+;  V02 arg1         [V02,T03] (  3,  3   )  struct ( 8) [fp+0x20]  do-not-enreg[S] single-def <System.Nullable`1[int]>
 ;  V03 arg2         [V03,T01] (  4,  4   )     ref  ->   x3         class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]>
-;  V04 loc0         [V04,T08] (  2,  2   )     ref  ->  x20         class-hnd single-def <<unknown class>>
-;  V05 loc1         [V05,T07] (  3,  2   )   ubyte  ->  [fp+0x24]  do-not-enreg[M] EH-live
+;  V04 loc0         [V04,T08] (  2,  2   )     ref  ->  x19         class-hnd single-def <<unknown class>>
+;  V05 loc1         [V05,T07] (  3,  2   )   ubyte  ->  [fp+0x1C]  do-not-enreg[M] EH-live
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V07 tmp1         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp2         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 tmp3         [V09,T11] (  2,  0   )     ref  ->   x0         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-;  V10 tmp4         [V10,T12] (  2,  0   )     ref  ->  x19         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-;  V11 tmp5         [V11,T13] (  2,  0   )     ref  ->  x20         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V09 tmp3         [V09,T13] (  2,  0   )     ref  ->   x0         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;  V10 tmp4         [V10,T14] (  2,  0   )     ref  ->  x19         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;  V11 tmp5         [V11,T15] (  2,  0   )     ref  ->  x20         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V12 tmp6         [V12,T10] (  3,  0   )     ref  ->   x0         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V13 tmp7         [V13,T04] (  4,  2   )     ref  ->  [fp+0x18]  EH-live single-def "field V01.contents (fldOffset=0x0)" P-INDEP
+;  V13 tmp7         [V13,T04] (  4,  2   )     ref  ->  [fp+0x10]  EH-live single-def "field V01.contents (fldOffset=0x0)" P-INDEP
 ;  V14 tmp8         [V14,T06] (  2,  4   )    long  ->   x0         "argument with side effect"
 ;  V15 PSPSym       [V15,T09] (  1,  1   )    long  ->  [fp+0x38]  do-not-enreg[V] "PSPSym"
 ;  V16 rat0         [V16,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V17 rat1         [V17,T02] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V17 rat1         [V17,T02] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;* V18 rat2         [V18,T16] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V19 rat3         [V19,T11] (  3,  0   )    long  ->   x1         "spilling expr"
+;  V20 rat4         [V20,T12] (  2,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 48
 
@@ -35,51 +38,52 @@ G_M8309_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
             mov     fp, sp
             add     x4, sp, #80
             stp     x0, x4, [fp, #0x30]    // [V15 PSPSym]
-            str     x1, [fp, #0x18]    // [V13 tmp7]
+            str     x0, [fp, #0x28]  // [V00 TypeCtx]
+            str     x1, [fp, #0x10]    // [V13 tmp7]
             ; GC ptr vars +{V13}
-            str     x2, [fp, #0x28]  // [V02 arg1]
-            mov     x19, x0
-                       ;; size=32 bbWeight=1 PerfScore 6.50
+            str     x2, [fp, #0x20]   // [V02 arg1]
+                       ;; size=32 bbWeight=1 PerfScore 7.00
 G_M8309_IG02:        ; bbWeight=1, gcVars=0000000000000010 {V13}, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs +[x3]
-            str     wzr, [fp, #0x24]  // [V05 loc1]
+            str     wzr, [fp, #0x1C] // [V05 loc1]
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M8309_IG03:        ; bbWeight=1, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
             mov     x0, x3
             ; gcrRegs +[x0]
-            ldr     x1, [fp, #0x28]   // [V02 arg1]
+            ldr     x1, [fp, #0x20]  // [V02 arg1]
             ldr     x3, [x3]
             ; gcrRegs -[x3]
             ldr     x3, [x3, #0x48]
             ldr     x3, [x3, #0x20]
             blr     x3
             ; gcr arg pop 0
-            mov     x20, x0
-            ; gcrRegs +[x20]
+            mov     x19, x0
+            ; gcrRegs +[x19]
             mov     w0, #1
             ; gcrRegs -[x0]
-            str     w0, [fp, #0x24]   // [V05 loc1]
+            str     w0, [fp, #0x1C]  // [V05 loc1]
                        ;; size=36 bbWeight=1 PerfScore 14.50
-G_M8309_IG04:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x19, #0x38]
-            ldr     x0, [x0, #0x18]
-            cbz     x0, G_M8309_IG06
-                       ;; size=12 bbWeight=1 PerfScore 7.00
-G_M8309_IG05:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M8309_IG04:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [fp, #0x28]    // [V00 TypeCtx]
+            ldr     x1, [x0, #0x38]
+            ldr     x2, [x1, #0x18]
+            cbz     x2, G_M8309_IG06
+                       ;; size=16 bbWeight=1 PerfScore 9.00
+G_M8309_IG05:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            mov     x0, x2
             b       G_M8309_IG07
-                       ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M8309_IG06:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            mov     x0, x19
+                      ;; size=8 bbWeight=0.80 PerfScore 1.20
+G_M8309_IG06:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
-                       ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M8309_IG07:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            mov     x1, x20
+                      ;; size=16 bbWeight=0.20 PerfScore 0.50
+G_M8309_IG07:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            mov     x1, x19
             ; gcrRegs +[x1]
-            ldr     x2, [fp, #0x18]    // [V13 tmp7]
+            ldr     x2, [fp, #0x10]  // [V13 tmp7]
             ; gcrRegs +[x2]
             movz    x3, #0xD1FFAB1E      // code for <unknown method>
             movk    x3, #0xD1FFAB1E LSL #16
@@ -93,16 +97,32 @@ G_M8309_IG08:        ; bbWeight=1, epilog, nogc, extend
             ; gcr arg pop 0
                        ;; size=12 bbWeight=1 PerfScore 3.00
 G_M8309_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
-            ; gcrRegs -[x1-x2 x20]
+            ; gcrRegs -[x1-x2 x19]
             stp     fp, lr, [sp, #-0x30]!
             stp     x19, x20, [sp, #0x20]
             add     x3, fp, #80
             str     x3, [sp, #0x18]
                        ;; size=16 bbWeight=0 PerfScore 0.00
 G_M8309_IG10:        ; bbWeight=0, gcVars=0000000000000010 {V13}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-            ldr     w0, [fp, #0x24]    // [V05 loc1]
-            cbnz    w0, G_M8309_IG12
-            ldr     x2, [fp, #0x18]    // [V13 tmp7]
+            ldr     w0, [fp, #0x1C]  // [V05 loc1]
+            cbnz    w0, G_M8309_IG14
+            ldr     x0, [fp, #0x28]    // [V00 TypeCtx]
+            ldr     x1, [x0, #0x38]
+            ldr     x2, [x1, #0x10]
+            cmp     x2, #32
+            ble     G_M8309_IG11
+            ldr     x1, [x1, #0x20]
+            cbnz    x1, G_M8309_IG12
+                       ;; size=36 bbWeight=0 PerfScore 0.00
+G_M8309_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=16 bbWeight=0 PerfScore 0.00
+G_M8309_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ldr     x2, [fp, #0x10]    // [V13 tmp7]
             ; gcrRegs +[x2]
             ldr     x0, [x2, #0x10]
             ; gcrRegs +[x0]
@@ -118,7 +138,7 @@ G_M8309_IG10:        ; bbWeight=0, gcVars=0000000000000010 {V13}, gcrefRegs=0000
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             ; GC ptr vars -{V13}
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs -[x1-x2] +[x0]
             ; gcr arg pop 0
             add     x14, x0, #8
@@ -135,19 +155,19 @@ G_M8309_IG10:        ; bbWeight=0, gcVars=0000000000000010 {V13}, gcrefRegs=0000
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15 x20]
             ; byrRegs -[x14]
-                     ;; size=72 bbWeight=0 PerfScore 0.00
-G_M8309_IG11:        ; bbWeight=0, funclet epilog, nogc, extend
+                      ;; size=64 bbWeight=0 PerfScore 0.00
+G_M8309_IG13:        ; bbWeight=0, funclet epilog, nogc, extend
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M8309_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M8309_IG14:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
             ldp     x19, x20, [sp, #0x20]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 256, prolog size 32, PerfScore 40.40, instruction count 64, allocated bytes for code 256 (MethodHash=b65adf8a) for method Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
+; Total bytes of code 304, prolog size 32, PerfScore 43.20, instruction count 76, allocated bytes for code 304 (MethodHash=b65adf8a) for method Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -158,7 +178,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
+  Function Length   : 37 (0x00025) Actual length = 148 (0x000094)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -181,7 +201,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 28 (0x0001c) Actual length = 112 (0x000070)
+  Function Length   : 39 (0x00027) Actual length = 156 (0x00009c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
  
libraries_tests.run.windows.arm64.Release.mch
-36 (-14.52%) : 1106.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
@@ -9,13 +9,12 @@
 ; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
-;  V01 loc0         [V01,T02] (  7,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
+;  V00 arg0         [V00,T00] (  5,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
+;  V01 loc0         [V01,T01] (  5,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
+;  V03 tmp1         [V03,T02] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt return temp"
 ;* V05 tmp3         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;  V06 rat0         [V06,T00] (  6,  7   )     ref  ->   x0         class-hnd "replacement local" <System.Reflection.IReflectableType>
 ;
 ; Lcl frame size = 0
 
@@ -27,55 +26,34 @@ G_M46371_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
                        ;; size=16 bbWeight=1 PerfScore 3.00
 G_M46371_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M46371_IG10
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            cbnz    x0, G_M46371_IG06
-                       ;; size=12 bbWeight=1 PerfScore 2.50
-G_M46371_IG03:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M46371_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M46371_IG04:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            bne     G_M46371_IG11
-                       ;; size=24 bbWeight=1 PerfScore 6.00
-G_M46371_IG05:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x10]
-            ldp     fp, lr, [sp], #0x20
-            ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
-G_M46371_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            beq     G_M46371_IG03
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M46371_IG07:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
+            cbz     x19, G_M46371_IG06
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            cbnz    x0, G_M46371_IG04
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            cbz     x0, G_M46371_IG04
+            ldr     x1, [x0]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x1, x2
+            bne     G_M46371_IG07
+                       ;; size=52 bbWeight=1 PerfScore 11.00
+G_M46371_IG03:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x19, x20, [sp, #0x10]
+            ldp     fp, lr, [sp], #0x20
+            ret     lr
+                       ;; size=12 bbWeight=1 PerfScore 3.00
+G_M46371_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
@@ -92,18 +70,18 @@ G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             mov     x0, x20
             ; gcrRegs +[x0]
                        ;; size=48 bbWeight=0 PerfScore 0.00
-G_M46371_IG09:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG05:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M46371_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0 x20]
             mov     w0, #0xD1FFAB1E
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_STRCNS
+            bl      CORINFO_HELP_NEWARR_1_ALIGN8
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // code for System.ArgumentNullException:Throw(System.String)
@@ -115,21 +93,21 @@ G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             ; gcr arg pop 0
             brk_windows #0
                        ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46371_IG11:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M46371_IG07:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x0]
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
             movk    x11, #0xD1FFAB1E LSL #16
             movk    x11, #0xD1FFAB1E LSL #32
             ldr     x1, [x11]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M46371_IG12:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG08:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             br      x1
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 248, prolog size 16, PerfScore 18.50, instruction count 62, allocated bytes for code 248 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
+; Total bytes of code 212, prolog size 16, PerfScore 17.00, instruction count 53, allocated bytes for code 212 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -140,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 62 (0x0003e) Actual length = 248 (0x0000f8)
+  Function Length   : 53 (0x00035) Actual length = 212 (0x0000d4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-36 (-14.52%) : 4572.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
@@ -9,13 +9,12 @@
 ; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
-;  V01 loc0         [V01,T02] (  7,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
+;  V00 arg0         [V00,T00] (  5,  4   )     ref  ->  x19         class-hnd single-def <System.Type>
+;  V01 loc0         [V01,T01] (  5,  4   )     ref  ->   x0         class-hnd single-def <System.Reflection.IReflectableType>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
+;  V03 tmp1         [V03,T02] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.TypeDelegator>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt return temp"
 ;* V05 tmp3         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType>
-;  V06 rat0         [V06,T00] (  6,  7   )     ref  ->   x0         class-hnd "replacement local" <System.Reflection.IReflectableType>
 ;
 ; Lcl frame size = 0
 
@@ -27,55 +26,34 @@ G_M46371_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
                        ;; size=16 bbWeight=1 PerfScore 3.00
 G_M46371_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M46371_IG10
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            cbnz    x0, G_M46371_IG06
-                       ;; size=12 bbWeight=1 PerfScore 2.50
-G_M46371_IG03:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x0, G_M46371_IG08
-                       ;; size=4 bbWeight=1 PerfScore 1.00
-G_M46371_IG04:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            bne     G_M46371_IG11
-                       ;; size=24 bbWeight=1 PerfScore 6.00
-G_M46371_IG05:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x10]
-            ldp     fp, lr, [sp], #0x20
-            ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
-G_M46371_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x19]
-            ldr     x1, [x0]
-            movz    x2, #0xD1FFAB1E
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            cmp     x1, x2
-            beq     G_M46371_IG03
-                       ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M46371_IG07:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0]
+            cbz     x19, G_M46371_IG06
             mov     x1, x19
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
+            bl      CORINFO_HELP_INITINSTCLASS
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-            cbnz    x0, G_M46371_IG04
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            cbz     x0, G_M46371_IG04
+            ldr     x1, [x0]
+            movz    x2, #0xD1FFAB1E
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            cmp     x1, x2
+            bne     G_M46371_IG07
+                       ;; size=52 bbWeight=1 PerfScore 11.00
+G_M46371_IG03:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x19, x20, [sp, #0x10]
+            ldp     fp, lr, [sp], #0x20
+            ret     lr
+                       ;; size=12 bbWeight=1 PerfScore 3.00
+G_M46371_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
@@ -92,18 +70,18 @@ G_M46371_IG08:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             mov     x0, x20
             ; gcrRegs +[x0]
                        ;; size=48 bbWeight=0 PerfScore 0.00
-G_M46371_IG09:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG05:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             ret     lr
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M46371_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0 x20]
             mov     w0, #0xD1FFAB1E
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_STRCNS
+            bl      CORINFO_HELP_NEWARR_1_ALIGN8
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // code for System.ArgumentNullException:Throw(System.String)
@@ -115,21 +93,21 @@ G_M46371_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             ; gcr arg pop 0
             brk_windows #0
                        ;; size=44 bbWeight=0 PerfScore 0.00
-G_M46371_IG11:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M46371_IG07:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x0]
             movz    x11, #0xD1FFAB1E      // code for <unknown method>
             movk    x11, #0xD1FFAB1E LSL #16
             movk    x11, #0xD1FFAB1E LSL #32
             ldr     x1, [x11]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M46371_IG12:        ; bbWeight=0, epilog, nogc, extend
+G_M46371_IG08:        ; bbWeight=0, epilog, nogc, extend
             ldp     x19, x20, [sp, #0x10]
             ldp     fp, lr, [sp], #0x20
             br      x1
             ; gcr arg pop 0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 248, prolog size 16, PerfScore 18.50, instruction count 62, allocated bytes for code 248 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
+; Total bytes of code 212, prolog size 16, PerfScore 17.00, instruction count 53, allocated bytes for code 212 (MethodHash=88ec4adc) for method System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -140,7 +118,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 62 (0x0003e) Actual length = 248 (0x0000f8)
+  Function Length   : 53 (0x00035) Actual length = 212 (0x0000d4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-24 (-4.41%) : 1110.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:GetListByName(ulong,int,ulong,int,int,int):System.Canon[]:this (Tier1)
@@ -9,24 +9,24 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] ( 10,  4   )     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-;  V01 arg1         [V01,T09] (  3,  2   )    long  ->   x1         single-def
-;  V02 arg2         [V02,T04] (  4,  3   )     int  ->   x2         single-def
-;  V03 arg3         [V03,T05] (  4,  3   )    long  ->  x21         single-def
-;  V04 arg4         [V04,T06] (  4,  3   )     int  ->  x22         single-def
-;  V05 arg5         [V05,T07] (  3,  3   )     int  ->  x23         single-def
-;  V06 arg6         [V06,T03] (  5,  3   )     int  ->  x20         single-def
+;  V00 this         [V00,T00] ( 10,  4   )     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V01 arg1         [V01,T08] (  3,  2   )    long  ->   x1         single-def
+;  V02 arg2         [V02,T03] (  4,  3   )     int  ->   x2         single-def
+;  V03 arg3         [V03,T04] (  4,  3   )    long  ->  x21         single-def
+;  V04 arg4         [V04,T05] (  4,  3   )     int  ->  x22         single-def
+;  V05 arg5         [V05,T06] (  3,  3   )     int  ->  x23         single-def
+;  V06 arg6         [V06,T02] (  5,  3   )     int  ->  x20         single-def
 ;  V07 loc0         [V07    ] ( 10,  4   )  struct (24) [fp+0x18]  do-not-enreg[XSF] addr-exposed ld-addr-op <System.RuntimeType+RuntimeTypeCache+Filter>
-;  V08 loc1         [V08,T11] ( 10,  3.25)     ref  ->  x21         class-hnd <<unknown class>>
+;  V08 loc1         [V08,T11] (  9,  3   )     ref  ->  x21         class-hnd <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T10] (  4,  3.50)    long  ->   x1         "spilling helperCall"
-;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V12 tmp3         [V12,T00] (  5,  7.50)     ref  ->   x0         class-hnd "spilling QMark2" <System.__Canon[]>
-;* V13 tmp4         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-;  V14 tmp5         [V14,T12] (  2,  2   )    long  ->  x21         "field V13.m_pStringHeap (fldOffset=0x0)" P-INDEP
-;  V15 tmp6         [V15,T13] (  2,  2   )     int  ->  x22         "field V13.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-;  V16 rat0         [V16,T08] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V17 rat1         [V17,T02] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp2         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
+;  V12 tmp3         [V12,T12] (  2,  2   )    long  ->  x21         "field V11.m_pStringHeap (fldOffset=0x0)" P-INDEP
+;  V13 tmp4         [V13,T13] (  2,  2   )     int  ->  x22         "field V11.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+;  V14 tmp5         [V14,T10] (  2,  4   )    long  ->   x0         "argument with side effect"
+;  V15 rat0         [V15,T07] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V16 rat1         [V16,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V17 rat2         [V17,T01] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -45,7 +45,7 @@ G_M19047_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             mov     w20, w6
                        ;; size=44 bbWeight=1 PerfScore 8.00
 G_M19047_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbnz    w2, G_M19047_IG12
+            cbnz    w2, G_M19047_IG10
                      ;; size=4 bbWeight=1 PerfScore 1.00
 G_M19047_IG03:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             str     x21, [fp, #0x18]   // [V07 loc0]
@@ -54,7 +54,7 @@ G_M19047_IG03:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             mov     x21, xzr
             ; gcrRegs +[x21]
             cmp     w20, #5
-            bne     G_M19047_IG13
+            bne     G_M19047_IG11
                       ;; size=24 bbWeight=1 PerfScore 5.00
 G_M19047_IG04:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x21]
@@ -74,45 +74,33 @@ G_M19047_IG05:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             ldr     x0, [x19]
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
-            ldr     x1, [x1, #0x28]
-            cbz     x1, G_M19047_IG07
+            ldr     x2, [x1, #0x28]
+            cbz     x2, G_M19047_IG07
                       ;; size=20 bbWeight=1 PerfScore 13.00
 G_M19047_IG06:        ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x2
             b       G_M19047_IG08
-                     ;; size=4 bbWeight=0.80 PerfScore 0.80
+                        ;; size=8 bbWeight=0.80 PerfScore 1.20
 G_M19047_IG07:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            mov     x1, x0
-                       ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M19047_IG08:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x21
-            ; gcrRegs +[x0]
-            cbz     x0, G_M19047_IG11
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19047_IG09:        ; bbWeight=0.50, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            cmp     x2, x1
-            beq     G_M19047_IG11
-                       ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M19047_IG10:        ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x1
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
+                       ;; size=16 bbWeight=0.20 PerfScore 0.50
+G_M19047_IG08:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             mov     x1, x21
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1 x21] +[x0]
-                       ;; size=12 bbWeight=0.25 PerfScore 0.50
-G_M19047_IG11:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+                     ;; size=8 bbWeight=1 PerfScore 1.50
+G_M19047_IG09:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
             ldp     fp, lr, [sp], #0x60
             ret     lr
                        ;; size=20 bbWeight=1 PerfScore 6.00
-G_M19047_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+G_M19047_IG10:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -129,10 +117,10 @@ G_M19047_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000
             ; gcrRegs -[x0]
             b       G_M19047_IG03
                        ;; size=48 bbWeight=0 PerfScore 0.00
-G_M19047_IG13:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M19047_IG11:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x21]
             cmp     w20, #6
-            bhi     G_M19047_IG20
+            bhi     G_M19047_IG18
             mov     w1, w20
             adr     x0, [@RWD00]
             ldr     w0, [x0, x1, LSL #2]
@@ -140,7 +128,7 @@ G_M19047_IG13:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             add     x0, x0, x2
             br      x0
                        ;; size=32 bbWeight=0 PerfScore 0.00
-G_M19047_IG14:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M19047_IG12:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x21]
             add     x1, fp, #24    // [V07 loc0]
             mov     x0, x19
@@ -154,6 +142,34 @@ G_M19047_IG14:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs +[x21]
             b       G_M19047_IG05
                        ;; size=36 bbWeight=0 PerfScore 0.00
+G_M19047_IG13:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x21]
+            add     x1, fp, #24    // [V07 loc0]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            ldr     x2, [x2]
+            blr     x2
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            b       G_M19047_IG05
+                       ;; size=36 bbWeight=0 PerfScore 0.00
+G_M19047_IG14:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x0 x21]
+            add     x1, fp, #24    // [V07 loc0]
+            mov     x0, x19
+            ; gcrRegs +[x0]
+            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movk    x2, #0xD1FFAB1E LSL #16
+            movk    x2, #0xD1FFAB1E LSL #32
+            ldr     x2, [x2]
+            blr     x2
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            b       G_M19047_IG05
+                       ;; size=36 bbWeight=0 PerfScore 0.00
 G_M19047_IG15:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x21]
             add     x1, fp, #24    // [V07 loc0]
@@ -173,7 +189,7 @@ G_M19047_IG16:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             add     x1, fp, #24    // [V07 loc0]
             mov     x0, x19
             ; gcrRegs +[x0]
-            movz    x2, #0xD1FFAB1E      // code for <unknown method>
+            movz    x2, #0xD1FFAB1E      // code for System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeEventInfo[]:this
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             ldr     x2, [x2]
@@ -196,35 +212,7 @@ G_M19047_IG17:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs +[x21]
             b       G_M19047_IG05
                        ;; size=36 bbWeight=0 PerfScore 0.00
-G_M19047_IG18:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x21]
-            add     x1, fp, #24    // [V07 loc0]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            movz    x2, #0xD1FFAB1E      // code for System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeEventInfo[]:this
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            ldr     x2, [x2]
-            blr     x2
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            b       G_M19047_IG05
-                       ;; size=36 bbWeight=0 PerfScore 0.00
-G_M19047_IG19:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0 x21]
-            add     x1, fp, #24    // [V07 loc0]
-            mov     x0, x19
-            ; gcrRegs +[x0]
-            movz    x2, #0xD1FFAB1E      // code for <unknown method>
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            ldr     x2, [x2]
-            blr     x2
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            b       G_M19047_IG05
-                       ;; size=36 bbWeight=0 PerfScore 0.00
-G_M19047_IG20:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+G_M19047_IG18:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
@@ -239,16 +227,16 @@ G_M19047_IG20:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             blr     x2
             b       G_M19047_IG05
                        ;; size=48 bbWeight=0 PerfScore 0.00
-RWD00     dd  G_M19047_IG14 - G_M19047_IG02
-           dd  G_M19047_IG16 - G_M19047_IG02
+RWD00    dd  G_M19047_IG12 - G_M19047_IG02
+           dd  G_M19047_IG14 - G_M19047_IG02
+           dd  G_M19047_IG13 - G_M19047_IG02
            dd  G_M19047_IG15 - G_M19047_IG02
-         dd  G_M19047_IG17 - G_M19047_IG02
-           dd  G_M19047_IG18 - G_M19047_IG02
+         dd  G_M19047_IG16 - G_M19047_IG02
            dd  G_M19047_IG04 - G_M19047_IG02
-         dd  G_M19047_IG19 - G_M19047_IG02
+         dd  G_M19047_IG17 - G_M19047_IG02
 
 
-; Total bytes of code 544, prolog size 24, PerfScore 45.65, instruction count 136, allocated bytes for code 544 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
+; Total bytes of code 520, prolog size 24, PerfScore 43.20, instruction count 130, allocated bytes for code 520 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -259,7 +247,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 136 (0x00088) Actual length = 544 (0x000220)
+  Function Length   : 130 (0x00082) Actual length = 520 (0x000208)
   ---- Epilog scopes ----
   ---- Scope 0
...
  
+0 (0.00%) : 15620.dasm - Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:GetBoundNodes(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.CSharp.BoundNode]:this (Tier0)
@@ -171,7 +171,7 @@ G_M18301_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             str     x0, [fp, #0x70]    // [V13 tmp2]
@@ -287,7 +287,7 @@ G_M18301_IG19:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWSFAST
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             str     x0, [fp, #0x58]    // [V15 tmp4]
@@ -460,9 +460,11 @@ G_M18301_IG34:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #215
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // box for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             ldr     x0, [x0]
  
+48 (+33.33%) : 4567.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,90 +9,111 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] (  3,  3   )     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T02] (  5,  4.36)    long  ->   x1         single-def
-;  V02 arg1         [V02,T03] (  4,  4   )   byref  ->  x19         single-def
-;  V03 loc0         [V03,T01] (  7,  7   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T01] (  7,  5.72)    long  ->  x19         single-def
+;  V02 arg1         [V02,T03] (  4,  4   )   byref  ->  x20         single-def
+;  V03 loc0         [V03,T02] (  7,  7   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T00] (  4,  8.00)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T00] (  4,  8.00)     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T07] (  3,  4.00)    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T09] (  3,  4.00)    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V11 rat2         [V11,T06] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V11 rat2         [V11,T07] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V12 rat3         [V12,T10] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V13 rat4         [V13,T05] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V14 rat5         [V14,T08] (  2,  3.20)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG08
+            cbnz    x0, G_M58319_IG11
                      ;; size=8 bbWeight=1 PerfScore 4.00
-G_M58319_IG03:        ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ; gcrRegs -[x0]
-            ldr     x0, [x1, #0x38]
-            ldr     x2, [x0, #0x08]
-            cmp     x2, #24
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
             ble     G_M58319_IG06
                        ;; size=16 bbWeight=1.00 PerfScore 7.50
-G_M58319_IG04:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG04:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ldr     x0, [x0, #0x18]
             cbz     x0, G_M58319_IG06
                        ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M58319_IG05:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG05:        ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG07
                        ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M58319_IG06:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG06:        ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M58319_IG07:        ; bbWeight=1.00, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG07:        ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #32
+            ble     G_M58319_IG09
+                       ;; size=36 bbWeight=1.00 PerfScore 11.00
+G_M58319_IG08:        ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x20]
+            cbnz    x0, G_M58319_IG10
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M58319_IG09:        ; bbWeight=0.36, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M58319_IG10:        ; bbWeight=1.00, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=1.00 PerfScore 7.00
-G_M58319_IG08:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=1.00 PerfScore 3.50
+G_M58319_IG11:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 144, prolog size 20, PerfScore 33.92, instruction count 36, allocated bytes for code 144 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 192, prolog size 20, PerfScore 45.20, instruction count 48, allocated bytes for code 192 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -103,7 +124,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
+  Function Length   : 48 (0x00030) Actual length = 192 (0x0000c0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -111,9 +132,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+48 (+33.33%) : 1084.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCacheSystem.__Canon:System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
@@ -9,88 +9,109 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] (  3,  3   )     ref  ->  x20         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
-;  V01 TypeCtx      [V01,T02] (  5,  4.36)    long  ->   x1         single-def
-;  V02 arg1         [V02,T03] (  4,  4   )   byref  ->  x19         single-def
-;  V03 loc0         [V03,T01] (  7,  7   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  x21         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache>
+;  V01 TypeCtx      [V01,T01] (  7,  5.72)    long  ->  x19         single-def
+;  V02 arg1         [V02,T03] (  4,  4   )   byref  ->  x20         single-def
+;  V03 loc0         [V03,T02] (  7,  7   )     ref  ->   x0         class-hnd <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T00] (  4,  8   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V06 tmp1         [V06,T00] (  4,  8   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V09 rat0         [V09,T07] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V09 rat0         [V09,T09] (  3,  4   )    long  ->   x0         "runtime lookup"
 ;  V10 rat1         [V10,T04] (  3,  5.60)    long  ->   x0         "spilling expr"
-;  V11 rat2         [V11,T06] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V11 rat2         [V11,T07] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V12 rat3         [V12,T10] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V13 rat4         [V13,T05] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V14 rat5         [V14,T08] (  2,  3.20)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M58319_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x1, [fp, #0x10]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            mov     x19, x2
-            ; byrRegs +[x19]
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M58319_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
-            ldr     x0, [x19]
+            str     x1, [fp, #0x18]
+            mov     x21, x0
+            ; gcrRegs +[x21]
+            mov     x19, x1
+            mov     x20, x2
+            ; byrRegs +[x20]
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M58319_IG02:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x20]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M58319_IG07
-            ldr     x0, [x1, #0x38]
+            cbnz    x0, G_M58319_IG10
+            ldr     x0, [x19, #0x38]
             ; gcrRegs -[x0]
-            ldr     x2, [x0, #0x08]
-            cmp     x2, #24
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
             ble     G_M58319_IG05
                        ;; size=24 bbWeight=1 PerfScore 11.50
-G_M58319_IG03:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
+G_M58319_IG03:        ; bbWeight=0.80, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
             ldr     x0, [x0, #0x18]
             cbz     x0, G_M58319_IG05
                        ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M58319_IG04:        ; bbWeight=0.64, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M58319_IG04:        ; bbWeight=0.64, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
             b       G_M58319_IG06
                        ;; size=4 bbWeight=0.64 PerfScore 0.64
-G_M58319_IG05:        ; bbWeight=0.36, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            mov     x0, x1
+G_M58319_IG05:        ; bbWeight=0.36, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.36 PerfScore 1.08
-G_M58319_IG06:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
-            bl      CORINFO_HELP_NEWSFAST
+G_M58319_IG06:        ; bbWeight=1, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            add     x14, x21, #16
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            add     x14, x22, #16
             ; byrRegs +[x14]
-            mov     x15, x20
+            mov     x15, x21
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15 x20]
+            ; gcrRegs -[x0 x15 x21]
             ; byrRegs -[x14]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #32
+            ble     G_M58319_IG08
+                       ;; size=36 bbWeight=1 PerfScore 11.00
+G_M58319_IG07:        ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref, isz
+            ldr     x0, [x0, #0x20]
+            cbnz    x0, G_M58319_IG09
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M58319_IG08:        ; bbWeight=0.36, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
             mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M58319_IG09:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=100000 {x20}, byref
+            mov     x0, x20
             ; byrRegs +[x0]
-            mov     x1, x21
+            mov     x1, x22
             ; gcrRegs +[x1]
             mov     x2, xzr
             bl      <unknown method>
             ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0 x19]
+            ; byrRegs -[x0 x20]
             cmp     x0, #0
-            csel    x0, x0, x21, ne
-                       ;; size=44 bbWeight=1 PerfScore 7.00
-G_M58319_IG07:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[x21]
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            csel    x0, x0, x22, ne
+                       ;; size=24 bbWeight=1 PerfScore 3.50
+G_M58319_IG10:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[x22]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 144, prolog size 20, PerfScore 33.92, instruction count 36, allocated bytes for code 144 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
+; Total bytes of code 192, prolog size 20, PerfScore 45.20, instruction count 48, allocated bytes for code 192 (MethodHash=863b1c30) for method System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -101,7 +122,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 144 (0x000090)
+  Function Length   : 48 (0x00030) Actual length = 192 (0x0000c0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -109,9 +130,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
  
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-20 (-20.83%) : 2764.dasm - Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:b_60(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
@@ -9,11 +9,9 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c>
-;  V01 arg1         [V01,T01] (  3,  3   )     ref  ->   x1         class-hnd single-def <System.Reflection.PropertyInfo>
+;  V01 arg1         [V01,T00] (  3,  3   )     ref  ->   x1         class-hnd single-def <System.Reflection.PropertyInfo>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T02] (  3,  4.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V04 tmp2         [V04,T03] (  3,  1.25)    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V05 tmp3         [V05,T00] (  5,  6.75)     ref  ->   x0         class-hnd "spilling QMark2" <<unknown class>>
+;  V03 tmp1         [V03,T01] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
 ;
 ; Lcl frame size = 0
 
@@ -21,7 +19,7 @@ G_M28645_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     fp, lr, [sp, #-0x10]!
             mov     fp, sp
                        ;; size=8 bbWeight=1 PerfScore 1.50
-G_M28645_IG02:        ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M28645_IG02:        ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x1]
             mov     x0, x1
             ; gcrRegs +[x0]
@@ -37,28 +35,19 @@ G_M28645_IG02:        ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre
             blr     x3
             mov     x1, x0
             ; gcrRegs +[x1]
-            cbz     x0, G_M28645_IG05
-                       ;; size=48 bbWeight=1 PerfScore 9.50
-G_M28645_IG03:        ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #0xD1FFAB1E LSL #32
-            cmp     x2, x3
-            beq     G_M28645_IG05
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M28645_IG04:        ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            mov     x0, x3
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
-                       ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M28645_IG05:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+                      ;; size=60 bbWeight=1 PerfScore 11.00
+G_M28645_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldp     fp, lr, [sp], #0x10
             ret     lr
                        ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 96, prolog size 8, PerfScore 14.69, instruction count 24, allocated bytes for code 96 (MethodHash=8b27901a) for method Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 14.50, instruction count 19, allocated bytes for code 76 (MethodHash=8b27901a) for method Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -69,7 +58,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 24 (0x00018) Actual length = 96 (0x000060)
+  Function Length   : 19 (0x00013) Actual length = 76 (0x00004c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-32 (-9.41%) : 3037.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
@@ -12,11 +12,9 @@
 ;  V01 arg1         [V01,T02] (  4,  3.50)   byref  ->  x21         single-def
 ;  V02 arg2         [V02,T01] (  5,  3.50)   byref  ->  x20         single-def
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V04 tmp1         [V04,T04] (  3,  1.50)   ubyte  ->   x0         "Inline return value spill temp"
+;  V04 tmp1         [V04,T03] (  3,  1.50)   ubyte  ->   x0         "Inline return value spill temp"
 ;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.IReadOnlyDictionary`2[System.String,System.Object]>
-;  V06 tmp3         [V06    ] (  7,  2.88)     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
-;  V07 tmp4         [V07,T05] (  3,  1.25)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V08 tmp5         [V08,T03] (  3,  2.25)     ref  ->  x15         class-hnd "spilling QMark2" <<unknown class>>
+;  V06 tmp3         [V06    ] (  4,  2   )     ref  ->  [fp+0x10]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
 ;
 ; Lcl frame size = 8
 
@@ -66,7 +64,7 @@ G_M30064_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20
             blr     x4
             ; gcrRegs -[x1]
             ; byrRegs -[x3]
-            cbz     w0, G_M30064_IG10
+            cbz     w0, G_M30064_IG07
                       ;; size=104 bbWeight=1 PerfScore 22.00
 G_M30064_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {x20 x21}, byref, isz
             ldr     x0, [x19, #0x20]
@@ -81,80 +79,61 @@ G_M30064_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=300000 {
             ldr     x3, [x11]
             blr     x3
             ; gcrRegs -[x0 x19]
-            cbz     w0, G_M30064_IG07
+            cbz     w0, G_M30064_IG04
             ldr     x1, [fp, #0x10]   // [V06 tmp3]
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_ISINSTANCEOFARRAY
+            bl      CORINFO_HELP_ISINSTANCEOFINTERFACE
             ; gcrRegs -[x1] +[x0]
-            cbz     x0, G_M30064_IG07
-            ldr     x15, [fp, #0x10]   // [V06 tmp3]
-            ; gcrRegs +[x15]
-            mov     x0, x15
-            cbz     x0, G_M30064_IG06
-                       ;; size=80 bbWeight=0.50 PerfScore 10.25
-G_M30064_IG04:        ; bbWeight=0.25, gcrefRegs=8000 {x15}, byrefRegs=300000 {x20 x21}, byref, isz
-            ; gcrRegs -[x0]
-            ldr     x0, [fp, #0x10]    // [V06 tmp3]
-            ; gcrRegs +[x0]
-            ldr     x0, [x0]
-            ; gcrRegs -[x0]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            cmp     x0, x1
-            beq     G_M30064_IG06
-                       ;; size=28 bbWeight=0.25 PerfScore 2.00
-G_M30064_IG05:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
-            ; gcrRegs -[x15]
-            mov     x0, x1
+            cbz     x0, G_M30064_IG04
             ldr     x1, [fp, #0x10]   // [V06 tmp3]
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movz    x0, #0xD1FFAB1E
+            ; gcrRegs -[x0]
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             mov     x15, x0
             ; gcrRegs +[x15]
-                     ;; size=16 bbWeight=0.12 PerfScore 0.50
-G_M30064_IG06:        ; bbWeight=0.50, gcrefRegs=8000 {x15}, byrefRegs=300000 {x20 x21}, byref
-            ; gcrRegs -[x0]
             mov     x14, x20
             ; byrRegs +[x14]
             bl      CORINFO_HELP_CHECKED_ASSIGN_REF
-            ; gcrRegs -[x15]
+            ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
             mov     w0, #1
-            b       G_M30064_IG08
-                       ;; size=16 bbWeight=0.50 PerfScore 1.50
-G_M30064_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
+            b       G_M30064_IG05
+                       ;; size=108 bbWeight=0.50 PerfScore 12.50
+G_M30064_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref
             str     xzr, [x20]
             mov     w0, wzr
                        ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M30064_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M30064_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, byref, isz
             str     xzr, [fp, #0x10]  // [V06 tmp3]
-            cbz     w0, G_M30064_IG10
+            cbz     w0, G_M30064_IG07
             mov     w0, #1
                        ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M30064_IG09:        ; bbWeight=0.50, epilog, nogc, extend
+G_M30064_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M30064_IG10:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, gcvars, byref
+G_M30064_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=300000 {x20 x21}, gcvars, byref
             str     xzr, [x21]
             str     xzr, [x20]
             mov     w0, wzr
                        ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M30064_IG11:        ; bbWeight=0.50, epilog, nogc, extend
+G_M30064_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
 
-; Total bytes of code 340, prolog size 20, PerfScore 50.50, instruction count 85, allocated bytes for code 340 (MethodHash=d8648a8f) for method Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
+; Total bytes of code 308, prolog size 20, PerfScore 48.75, instruction count 77, allocated bytes for code 308 (MethodHash=d8648a8f) for method Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -165,7 +144,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 85 (0x00055) Actual length = 340 (0x000154)
+  Function Length   : 77 (0x0004d) Actual length = 308 (0x000134)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-8 (-7.41%) : 2071.dasm - InterfaceForwarder:GetInt():int:this (FullOpts)
@@ -7,12 +7,12 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  4,  4   )     ref  ->  x19         this class-hnd single-def <InterfaceForwarder>
+;  V00 this         [V00,T00] (  3,  3   )     ref  ->   x0         this class-hnd single-def <InterfaceForwarder>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1         [V02,T04] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V03 tmp2         [V03,T01] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
-;  V04 tmp3         [V04,T02] (  2,  4   )     ref  ->   x0         single-def "argument with side effect"
-;  V05 cse0         [V05,T03] (  3,  3   )    long  ->  x19         "CSE - aggressive"
+;  V02 tmp1         [V02,T01] (  2,  4   )     ref  ->   x0         single-def "argument with side effect"
+;  V03 tmp2         [V03,T02] (  2,  4   )     ref  ->   x1         single-def "argument with side effect"
+;  V04 tmp3         [V04,T03] (  2,  4   )     ref  ->   x0         single-def "argument with side effect"
+;  V05 cse0         [V05,T04] (  3,  3   )    long  ->  x19         "CSE - aggressive"
 ;
 ; Lcl frame size = 8
 
@@ -20,20 +20,18 @@ G_M16792_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     fp, lr, [sp, #-0x20]!
             str     x19, [sp, #0x18]
             mov     fp, sp
-            mov     x19, x0
-            ; gcrRegs +[x19]
-                       ;; size=16 bbWeight=1 PerfScore 3.00
-G_M16792_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x1, x19
+                      ;; size=12 bbWeight=1 PerfScore 2.50
+G_M16792_IG02:        ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[x0]
+            mov     x1, x0
             ; gcrRegs +[x1]
             movz    x0, #0xD1FFAB1E
+            ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_CHKCASTINTERFACE
+            bl      CORINFO_HELP_ISINSTANCEOFANY
             ; gcrRegs -[x1] +[x0]
-            mov     x0, x19
             movz    x19, #0xD1FFAB1E      // code for <unknown method>
-            ; gcrRegs -[x19]
             movk    x19, #0xD1FFAB1E LSL #16
             movk    x19, #0xD1FFAB1E LSL #32
             mov     x11, x19
@@ -45,19 +43,19 @@ G_M16792_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_CHKCASTINTERFACE
+            bl      CORINFO_HELP_ISINSTANCEOFANY
             ; gcrRegs -[x1] +[x0]
             add     x11, x19, #8
             ldr     wzr, [x0]
             ldr     x1, [x11]
-                        ;; size=80 bbWeight=1 PerfScore 19.00
+                     ;; size=76 bbWeight=1 PerfScore 18.50
 G_M16792_IG03:        ; bbWeight=1, epilog, nogc, extend
             ldr     x19, [sp, #0x18]
             ldp     fp, lr, [sp], #0x20
             br      x1
                        ;; size=12 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 108, prolog size 12, PerfScore 26.00, instruction count 27, allocated bytes for code 108 (MethodHash=d59cbe67) for method InterfaceForwarder:GetInt():int:this (FullOpts)
+; Total bytes of code 100, prolog size 12, PerfScore 25.00, instruction count 25, allocated bytes for code 100 (MethodHash=d59cbe67) for method InterfaceForwarder:GetInt():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -68,7 +66,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 27 (0x0001b) Actual length = 108 (0x00006c)
+  Function Length   : 25 (0x00019) Actual length = 100 (0x000064)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+32 (+23.53%) : 1820.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTrackerSystem.__Canon:Xunit.Sdk.CollectionTracker`1System.__Canon
@@ -7,83 +7,97 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  3.60)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T01] (  7,  4.20)    long  ->  x20         single-def
 ;  V01 arg0         [V01,T00] (  6,  4.50)     ref  ->  x19         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  4,  2   )     ref  ->   x1        
-;  V04 tmp2         [V04,T06] (  2,  2   )    long  ->   x1         "spilling helperCall"
-;  V05 tmp3         [V05,T05] (  2,  2   )     ref  ->   x1         class-hnd "spilling QMark2" <Xunit.Sdk.CollectionTracker`1[System.__Canon]>
+;  V03 tmp1         [V03,T04] (  4,  2   )     ref  ->   x0        
+;  V04 tmp2         [V04,T05] (  3,  2   )    long  ->   x2         "spilling helperCall"
+;  V05 tmp3         [V05,T07] (  2,  2   )     ref  ->   x0         class-hnd "spilling QMark2" <Xunit.Sdk.CollectionTracker`1[System.__Canon]>
 ;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V07 tmp5         [V07,T07] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V08 cse0         [V08,T08] (  3,  1.50)    long  ->   x0         "CSE - moderate"
-;  V09 rat0         [V09,T04] (  3,  2   )    long  ->   x2         "runtime lookup"
-;  V10 rat1         [V10,T02] (  3,  2.80)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V07 tmp5         [V07,T08] (  2,  2   )    long  ->   x0         "argument with side effect"
+;  V08 rat0         [V08,T02] (  3,  2.80)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V09 rat1         [V09,T06] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V10 rat2         [V10,T03] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M4963_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x20]!
-            str     x19, [sp, #0x18]
+            stp     fp, lr, [sp, #-0x30]!
+            stp     x19, x20, [sp, #0x20]
             mov     fp, sp
-            str     x0, [fp, #0x10]
+            str     x0, [fp, #0x18]
+            mov     x20, x0
             mov     x19, x1
             ; gcrRegs +[x19]
-                     ;; size=20 bbWeight=1 PerfScore 4.00
+                      ;; size=24 bbWeight=1 PerfScore 4.50
 G_M4963_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            cbz     x19, G_M4963_IG08
+            cbz     x19, G_M4963_IG11
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M4963_IG03:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x10]
+            ldr     x0, [x20, #0x38]
+            ldr     x2, [x0, #0x10]
             cbz     x2, G_M4963_IG05
                        ;; size=12 bbWeight=0.50 PerfScore 3.50
 G_M4963_IG04:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             b       G_M4963_IG06
                        ;; size=4 bbWeight=0.40 PerfScore 0.40
 G_M4963_IG05:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            mov     x0, x20
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
             mov     x2, x0
-                       ;; size=20 bbWeight=0.10 PerfScore 0.30
+                       ;; size=24 bbWeight=0.10 PerfScore 0.35
 G_M4963_IG06:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x2
-            mov     x1, x0
-            ldr     x2, [x19]
-            cmp     x2, x1
-            csel    x1, x19, xzr, eq
-            ; gcrRegs +[x1]
-            cbnz    x1, G_M4963_IG09
+            ldr     x0, [x19]
+            cmp     x0, x2
+            csel    x0, x19, xzr, eq
+            ; gcrRegs +[x0]
+            cbnz    x0, G_M4963_IG12
+            ldr     x0, [x20, #0x38]
+            ; gcrRegs -[x0]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M4963_IG08
+                       ;; size=28 bbWeight=0.50 PerfScore 6.00
+G_M4963_IG07:        ; bbWeight=0.40, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            b       G_M4963_IG09
+                       ;; size=4 bbWeight=0.40 PerfScore 0.40
+G_M4963_IG08:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            mov     x0, x20
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=20 bbWeight=0.10 PerfScore 0.30
+G_M4963_IG09:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             mov     x1, x19
+            ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for Xunit.Sdk.CollectionTracker`1[System.__Canon]:Wrap(System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon]
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             ldr     x2, [x2]
-                     ;; size=44 bbWeight=0.50 PerfScore 5.50
-G_M4963_IG07:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x19, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x20
+                      ;; size=20 bbWeight=0.50 PerfScore 2.50
+G_M4963_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x30
             br      x2
             ; gcr arg pop 0
-                      ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M4963_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                        ;; size=12 bbWeight=0.50 PerfScore 1.50
+G_M4963_IG11:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[x1 x19]
-            mov     x1, xzr
-            ; gcrRegs +[x1]
-                       ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M4963_IG09:        ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
-            mov     x0, x1
+            mov     x0, xzr
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M4963_IG10:        ; bbWeight=0.50, epilog, nogc, extend
-            ldr     x19, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x20
+G_M4963_IG12:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x30
             ret     lr
-                        ;; size=12 bbWeight=0.50 PerfScore 2.00
+                       ;; size=12 bbWeight=0.50 PerfScore 1.50
 
-; Total bytes of code 136, prolog size 20, PerfScore 19.20, instruction count 34, allocated bytes for code 136 (MethodHash=027eec9c) for method Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
+; Total bytes of code 168, prolog size 24, PerfScore 22.20, instruction count 42, allocated bytes for code 168 (MethodHash=027eec9c) for method Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -94,7 +108,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 34 (0x00022) Actual length = 136 (0x000088)
+  Function Length   : 42 (0x0002a) Actual length = 168 (0x0000a8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -105,8 +119,8 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 03       save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
-    83          save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
     E4          end
  
+44 (+33.33%) : 5787.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:CollectSystem.__Canon:Microsoft.CodeAnalysis.IncrementalValueProvider1[System.Collections.Immutable.ImmutableArray1[System.__Canon]] (FullOpts)
@@ -8,55 +8,58 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.20)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct (16) zero-ref    multireg-arg single-def <Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T01] (  3,  6   )     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.BatchNode`1[System.__Canon]>
+;  V03 tmp1         [V03,T01] (  3,  6   )     ref  ->  x22         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.BatchNode`1[System.__Canon]>
 ;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
 ;* V06 tmp4         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp5         [V07    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V08 tmp6         [V08,T04] (  2,  2   )     ref  ->  x19         single-def "field V01.Node (fldOffset=0x0)" P-INDEP
-;  V09 tmp7         [V09,T05] (  2,  2   )   ubyte  ->  x20         single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-;  V10 tmp8         [V10,T06] (  2,  2   )     ref  ->   x0         single-def "field V05.Node (fldOffset=0x0)" P-INDEP
-;  V11 tmp9         [V11,T07] (  2,  2   )   ubyte  ->   x1         "field V05.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
-;  V12 rat0         [V12,T03] (  3,  4   )    long  ->   x1         "runtime lookup"
-;  V13 rat1         [V13,T02] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V08 tmp6         [V08,T06] (  2,  2   )     ref  ->  x20         single-def "field V01.Node (fldOffset=0x0)" P-INDEP
+;  V09 tmp7         [V09,T07] (  2,  2   )   ubyte  ->  x21         single-def "field V01.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+;  V10 tmp8         [V10,T08] (  2,  2   )     ref  ->   x0         single-def "field V05.Node (fldOffset=0x0)" P-INDEP
+;  V11 tmp9         [V11,T09] (  2,  2   )   ubyte  ->   x1         "field V05.CatchAnalyzerExceptions (fldOffset=0x8)" P-INDEP
+;  V12 rat0         [V12,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V13 rat1         [V13,T02] (  3,  5.60)    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;* V14 rat2         [V14,T10] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V15 rat3         [V15,T03] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V16 rat4         [V16,T04] (  2,  3.20)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M15345_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     fp, lr, [sp, #-0x40]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
-            str     x0, [fp, #0x10]
-            mov     x19, x1
-            ; gcrRegs +[x19]
-            mov     w20, w2
-                       ;; size=28 bbWeight=1 PerfScore 5.50
-G_M15345_IG02:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ldr     x1, [x0, #0x38]
-            ldr     x1, [x1, #0x10]
-            cbz     x1, G_M15345_IG04
+            str     x0, [fp, #0x18]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
+            mov     w21, w2
+                       ;; size=32 bbWeight=1 PerfScore 6.00
+G_M15345_IG02:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M15345_IG04
                       ;; size=12 bbWeight=1 PerfScore 7.00
-G_M15345_IG03:        ; bbWeight=0.80, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M15345_IG03:        ; bbWeight=0.80, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             b       G_M15345_IG05
                        ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M15345_IG04:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M15345_IG04:        ; bbWeight=0.20, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-            mov     x1, x0
+            bl      CORINFO_HELP_MEMCPY
                         ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M15345_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            mov     x0, x1
-            bl      CORINFO_HELP_NEWSFAST
+G_M15345_IG05:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            bl      CORINFO_HELP_NEWFAST_MAYBEFROZEN
             ; gcrRegs +[x0]
-            mov     x21, x0
-            ; gcrRegs +[x21]
-            mov     x1, x19
+            mov     x22, x0
+            ; gcrRegs +[x22]
+            mov     x1, x20
             ; gcrRegs +[x1]
             mov     x2, xzr
             mov     x3, xzr
@@ -65,19 +68,36 @@ G_M15345_IG05:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             movk    x4, #0xD1FFAB1E LSL #32
             ldr     x4, [x4]
             blr     x4
-            ; gcrRegs -[x0-x1 x19]
-            mov     x0, x21
+            ; gcrRegs -[x0-x1 x20]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x08]
+            cmp     x1, #24
+            ble     G_M15345_IG07
+                       ;; size=56 bbWeight=1 PerfScore 16.00
+G_M15345_IG06:        ; bbWeight=0.80, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M15345_IG08
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M15345_IG07:        ; bbWeight=0.36, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M15345_IG08:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+            mov     x0, x22
             ; gcrRegs +[x0]
-            uxtb    w1, w20
-                       ;; size=52 bbWeight=1 PerfScore 10.00
-G_M15345_IG06:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x21, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x30
+            uxtb    w1, w21
+                       ;; size=8 bbWeight=1 PerfScore 1.00
+G_M15345_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x40
             ret     lr
-                        ;; size=16 bbWeight=1 PerfScore 5.00
+                      ;; size=16 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 132, prolog size 20, PerfScore 28.90, instruction count 33, allocated bytes for code 132 (MethodHash=59b2c40e) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
+; Total bytes of code 176, prolog size 20, PerfScore 39.68, instruction count 44, allocated bytes for code 176 (MethodHash=59b2c40e) for method Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -88,7 +108,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
+  Function Length   : 44 (0x0002c) Actual length = 176 (0x0000b0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -96,9 +116,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E4          end
     E4          end
     E4          end
 
  
+44 (+37.93%) : 4313.dasm - System.Linq.ImmutableArrayExtensions:SelectSystem.Canon,System.Canon:System.Collections.Generic.IEnumerable`1System.__Canon
@@ -8,70 +8,87 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T00] (  5,  4.36)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T00] (  7,  5.56)    long  ->  x19         single-def
 ;* V01 arg0         [V01    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-;  V02 arg1         [V02,T02] (  3,  3   )     ref  ->  x19         class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+;  V02 arg1         [V02,T03] (  3,  3   )     ref  ->  x20         class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V05 tmp2         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V06 tmp3         [V06,T03] (  3,  3   )     ref  ->  x20         single-def "field V01.array (fldOffset=0x0)" P-INDEP
-;  V07 tmp4         [V07,T06] (  2,  4   )    long  ->   x0         "argument with side effect"
-;  V08 rat0         [V08,T05] (  3,  4   )    long  ->   x0         "runtime lookup"
-;  V09 rat1         [V09,T01] (  3,  5.60)    long  ->   x1         "spilling expr"
-;  V10 rat2         [V10,T04] (  3,  4.48)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V06 tmp3         [V06,T04] (  3,  3   )     ref  ->  x21         single-def "field V01.array (fldOffset=0x0)" P-INDEP
+;  V07 tmp4         [V07,T07] (  2,  4   )    long  ->   x0         "argument with side effect"
+;* V08 rat0         [V08,T08] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V09 rat1         [V09,T01] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V10 rat2         [V10,T06] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V11 rat3         [V11,T02] (  3,  5.60)    long  ->   x0         "spilling expr"
+;  V12 rat4         [V12,T05] (  3,  4.48)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M61273_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
-            stp     x19, x20, [sp, #0x20]
+            stp     x19, x20, [sp, #0x18]
+            str     x21, [sp, #0x28]
             mov     fp, sp
-            str     x0, [fp, #0x18]
-            mov     x20, x1
+            str     x0, [fp, #0x10]
+            mov     x19, x0
+            mov     x21, x1
+            ; gcrRegs +[x21]
+            mov     x20, x2
             ; gcrRegs +[x20]
-            mov     x19, x2
-            ; gcrRegs +[x19]
-                       ;; size=24 bbWeight=1 PerfScore 4.50
-G_M61273_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     wzr, [x20, #0x08]
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x10]
-            cmp     x2, #32
-            ble     G_M61273_IG05
-                       ;; size=20 bbWeight=1 PerfScore 10.50
-G_M61273_IG03:        ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x1, #0x20]
-            cbz     x2, G_M61273_IG05
-                       ;; size=8 bbWeight=0.80 PerfScore 3.20
-G_M61273_IG04:        ; bbWeight=0.64, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            mov     x0, x2
-            b       G_M61273_IG06
-                       ;; size=8 bbWeight=0.64 PerfScore 0.96
-G_M61273_IG05:        ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+                      ;; size=32 bbWeight=1 PerfScore 6.00
+G_M61273_IG02:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x0, [x0, #0x18]
+            cbnz    x0, G_M61273_IG04
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M61273_IG03:        ; bbWeight=0.20, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
-                       ;; size=16 bbWeight=0.36 PerfScore 0.90
-G_M61273_IG06:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            mov     x1, x20
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M61273_IG04:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     wzr, [x21, #0x08]
+            ldr     x0, [x19, #0x38]
+            ldr     x1, [x0, #0x10]
+            cmp     x1, #32
+            ble     G_M61273_IG07
+                       ;; size=20 bbWeight=1 PerfScore 10.50
+G_M61273_IG05:        ; bbWeight=0.80, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x0, #0x20]
+            cbz     x0, G_M61273_IG07
+                       ;; size=8 bbWeight=0.80 PerfScore 3.20
+G_M61273_IG06:        ; bbWeight=0.64, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            b       G_M61273_IG08
+                       ;; size=4 bbWeight=0.64 PerfScore 0.64
+G_M61273_IG07:        ; bbWeight=0.36, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+                       ;; size=20 bbWeight=0.36 PerfScore 1.08
+G_M61273_IG08:        ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+            mov     x1, x21
             ; gcrRegs +[x1]
-            mov     x2, x19
+            mov     x2, x20
             ; gcrRegs +[x2]
             movz    x3, #0xD1FFAB1E      // code for <unknown method>
             movk    x3, #0xD1FFAB1E LSL #16
             movk    x3, #0xD1FFAB1E LSL #32
             ldr     x3, [x3]
             blr     x3
-            ; gcrRegs -[x1-x2 x19-x20] +[x0]
+            ; gcrRegs -[x1-x2 x20-x21] +[x0]
                      ;; size=28 bbWeight=1 PerfScore 6.50
-G_M61273_IG07:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x20]
+G_M61273_IG09:        ; bbWeight=1, epilog, nogc, extend
+            ldr     x21, [sp, #0x28]
+            ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
+                      ;; size=16 bbWeight=1 PerfScore 5.00
 
-; Total bytes of code 116, prolog size 16, PerfScore 29.56, instruction count 29, allocated bytes for code 116 (MethodHash=f31810a6) for method System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
+; Total bytes of code 160, prolog size 20, PerfScore 40.52, instruction count 40, allocated bytes for code 160 (MethodHash=f31810a6) for method System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -82,7 +99,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 29 (0x0001d) Actual length = 116 (0x000074)
+  Function Length   : 40 (0x00028) Actual length = 160 (0x0000a0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -90,10 +107,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    D0 85       save_reg X#2 Z#5 (0x05); str x21, [sp, #40]
+    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
     85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
-    E4          end
-    E4          end
 
  
  
realworld.run.windows.arm64.checked.mch
-36 (-21.43%) : 14111.dasm - Microsoft.Win32.SafeHandles.SafeChainEngineHandle:.cctor() (FullOpts)
@@ -9,88 +9,75 @@
 ; Final local variable assignments
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V01 tmp1         [V01,T00] (  7, 14   )     ref  ->   x0         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeChainEngineHandle>
-;  V02 tmp2         [V02,T01] (  7, 14   )     ref  ->   x0         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeChainEngineHandle>
-;  V03 cse0         [V03,T02] (  3,  3   )    long  ->  x19         "CSE - aggressive"
-;  V04 cse1         [V04,T03] (  3,  3   )    long  ->  x20         "CSE - aggressive"
+;  V01 tmp1         [V01,T00] (  7, 14   )     ref  ->  x15         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeChainEngineHandle>
+;  V02 tmp2         [V02,T01] (  5, 10   )     ref  ->   x0         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeChainEngineHandle>
+;  V03 cse0         [V03,T02] (  3,  3   )     ref  ->   x0         "CSE - aggressive"
+;  V04 cse1         [V04,T03] (  3,  3   )   byref  ->   x1         "CSE - aggressive"
+;  V05 cse2         [V05,T04] (  3,  3   )   byref  ->   x2         "CSE - aggressive"
+;  V06 cse3         [V06,T05] (  3,  3   )    long  ->   x3         "CSE - aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M11709_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x20]!
-            stp     x19, x20, [sp, #0x10]
+            stp     fp, lr, [sp, #-0x10]!
             mov     fp, sp
-                       ;; size=12 bbWeight=1 PerfScore 2.50
+                      ;; size=8 bbWeight=1 PerfScore 1.50
 G_M11709_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            movz    x19, #0xD1FFAB1E
-            movk    x19, #0xD1FFAB1E LSL #16
-            movk    x19, #0xD1FFAB1E LSL #32
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
+            movz    x0, #0xD1FFAB1E
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_DBLROUND
             ; gcrRegs +[x0]
-            str     xzr, [x0, #0x10]
-            add     x14, x0, #24
-            ; byrRegs +[x14]
-            mov     w15, #4
-            stlr    w15, [x14]
+            mov     x15, x0
+            ; gcrRegs +[x15]
+            str     xzr, [x15, #0x10]
+            add     x1, x15, #24
+            ; byrRegs +[x1]
+            mov     w14, #4
+            stlr    w14, [x1]
+            mov     w14, #1
+            strb    w14, [x15, #0x1C]
+            add     x2, x15, #29
+            ; byrRegs +[x2]
+            stlrb   w14, [x2]
+            str     x14, [x15, #0x10]
+            movz    x3, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            movk    x3, #0xD1FFAB1E LSL #16
+            movk    x3, #0xD1FFAB1E LSL #32
+            mov     x14, x3
+            bl      CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[x15]
+            str     xzr, [x0, #0x10]
+            mov     w14, #4
+            stlr    w14, [x1]
             mov     w14, #1
-            ; byrRegs -[x14]
             strb    w14, [x0, #0x1C]
-            add     x14, x0, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     x15, [x0, #0x10]
-            movz    x20, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
-            movk    x20, #0xD1FFAB1E LSL #16
-            movk    x20, #0xD1FFAB1E LSL #32
-            mov     x14, x20
-            ; byrRegs -[x14]
+            stlrb   w14, [x2]
+            str     xzr, [x0, #0x10]
+            add     x14, x3, #8
             mov     x15, x0
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
-            mov     x0, x19
-            bl      CORINFO_HELP_NEWFAST
-            ; gcrRegs +[x0]
-            str     xzr, [x0, #0x10]
-            add     x14, x0, #24
-            ; byrRegs +[x14]
-            mov     w15, #4
-            stlr    w15, [x14]
-            mov     w14, #1
-            ; byrRegs -[x14]
-            strb    w14, [x0, #0x1C]
-            add     x14, x0, #29
-            ; byrRegs +[x14]
-            mov     w15, #1
-            stlrb   w15, [x14]
-            str     xzr, [x0, #0x10]
-            add     x14, x20, #8
-            ; byrRegs -[x14]
-            mov     x15, x0
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x0 x15]
-                       ;; size=144 bbWeight=1 PerfScore 25.00
+            ; byrRegs -[x1-x2]
+                       ;; size=116 bbWeight=1 PerfScore 21.00
 G_M11709_IG03:        ; bbWeight=1, epilog, nogc, extend
-            ldp     x19, x20, [sp, #0x10]
-            ldp     fp, lr, [sp], #0x20
+            ldp     fp, lr, [sp], #0x10
             ret     lr
-                       ;; size=12 bbWeight=1 PerfScore 3.00
+                      ;; size=8 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 168, prolog size 12, PerfScore 30.50, instruction count 42, allocated bytes for code 168 (MethodHash=991dd242) for method Microsoft.Win32.SafeHandles.SafeChainEngineHandle:.cctor() (FullOpts)
+; Total bytes of code 132, prolog size 8, PerfScore 24.50, instruction count 33, allocated bytes for code 132 (MethodHash=991dd242) for method Microsoft.Win32.SafeHandles.SafeChainEngineHandle:.cctor() (FullOpts)
 ; ============================================================
 
 Unwind Info:
   >> Start offset   : 0x000000 (not in unwind data)
   >>   End offset   : 0xd1ffab1e (not in unwind data)
-  Code Words        : 2
+  Code Words        : 1
   Epilog Count      : 1
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 42 (0x0002a) Actual length = 168 (0x0000a8)
+  Function Length   : 33 (0x00021) Actual length = 132 (0x000084)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -98,10 +85,7 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    C8 02       save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16]
-    83          save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
-    E4          end
-    E4          end
+    81          save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
     E4          end
     E4          end
 
  
-24 (-4.51%) : 85.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:GetListByName(ulong,int,ulong,int,int,int):System.Canon[]:this (FullOpts)
@@ -9,23 +9,23 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 10,  6.50)     ref  ->  x19         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-;  V01 arg1         [V01,T09] (  3,  2.50)    long  ->   x1         single-def
-;  V02 arg2         [V02,T05] (  4,  3.50)     int  ->   x2         single-def
-;  V03 arg3         [V03,T06] (  4,  3.50)    long  ->  x21         single-def
-;  V04 arg4         [V04,T07] (  4,  3.50)     int  ->  x22         single-def
-;  V05 arg5         [V05,T08] (  3,  3   )     int  ->  x23         single-def
-;  V06 arg6         [V06,T02] (  4,  4   )     int  ->  x20         single-def
+;  V01 arg1         [V01,T08] (  3,  2.50)    long  ->   x1         single-def
+;  V02 arg2         [V02,T04] (  4,  3.50)     int  ->   x2         single-def
+;  V03 arg3         [V03,T05] (  4,  3.50)    long  ->  x21         single-def
+;  V04 arg4         [V04,T06] (  4,  3.50)     int  ->  x22         single-def
+;  V05 arg5         [V05,T07] (  3,  3   )     int  ->  x23         single-def
+;  V06 arg6         [V06,T01] (  4,  4   )     int  ->  x20         single-def
 ;  V07 loc0         [V07    ] ( 10,  6.50)  struct (24) [fp+0x18]  do-not-enreg[XSF] addr-exposed ld-addr-op <System.RuntimeType+RuntimeTypeCache+Filter>
-;  V08 loc1         [V08,T03] ( 10,  5.62)     ref  ->  x21         class-hnd <<unknown class>>
+;  V08 loc1         [V08,T03] (  9,  5.50)     ref  ->  x21         class-hnd <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T11] (  4,  2.75)    long  ->   x1         "spilling helperCall"
-;* V11 tmp2         [V11    ] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V12 tmp3         [V12,T01] (  5,  6.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.__Canon[]>
-;* V13 tmp4         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
-;  V14 tmp5         [V14,T12] (  2,  2   )    long  ->  x21         "field V13.m_pStringHeap (fldOffset=0x0)" P-INDEP
-;  V15 tmp6         [V15,T13] (  2,  2   )     int  ->  x22         "field V13.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
-;  V16 rat0         [V16,T10] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V17 rat1         [V17,T04] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;* V11 tmp2         [V11    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.MdUtf8String>
+;  V12 tmp3         [V12,T12] (  2,  2   )    long  ->  x21         "field V11.m_pStringHeap (fldOffset=0x0)" P-INDEP
+;  V13 tmp4         [V13,T13] (  2,  2   )     int  ->  x22         "field V11.m_StringHeapByteLength (fldOffset=0x8)" P-INDEP
+;  V14 tmp5         [V14,T11] (  2,  4   )    long  ->   x0         "argument with side effect"
+;  V15 rat0         [V15,T09] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V16 rat1         [V16,T10] (  3,  4   )    long  ->   x0         "runtime lookup"
+;  V17 rat2         [V17,T02] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -192,38 +192,26 @@ G_M19047_IG13:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             ldr     x0, [x19]
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
-            ldr     x1, [x1, #0x18]
-            cbz     x1, G_M19047_IG15
+            ldr     x2, [x1, #0x18]
+            cbz     x2, G_M19047_IG15
                       ;; size=20 bbWeight=1 PerfScore 13.00
 G_M19047_IG14:        ; bbWeight=0.80, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+            mov     x0, x2
             b       G_M19047_IG16
-                     ;; size=4 bbWeight=0.80 PerfScore 0.80
+                        ;; size=8 bbWeight=0.80 PerfScore 1.20
 G_M19047_IG15:        ; bbWeight=0.20, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            mov     x1, x0
-                       ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x21
-            ; gcrRegs +[x0]
-            cbz     x0, G_M19047_IG19
-                       ;; size=8 bbWeight=1 PerfScore 1.50
-G_M19047_IG17:        ; bbWeight=0.25, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            cmp     x2, x1
-            beq     G_M19047_IG19
-                       ;; size=12 bbWeight=0.25 PerfScore 1.12
-G_M19047_IG18:        ; bbWeight=0.12, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x0]
-            mov     x0, x1
+            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD_LOG
+                       ;; size=16 bbWeight=0.20 PerfScore 0.50
+G_M19047_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             mov     x1, x21
             ; gcrRegs +[x1]
-            bl      CORINFO_HELP_CHKCASTARRAY
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1 x21] +[x0]
-                       ;; size=12 bbWeight=0.12 PerfScore 0.25
-G_M19047_IG19:        ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, epilog, nogc
+                     ;; size=8 bbWeight=1 PerfScore 1.50
+G_M19047_IG17:        ; bbWeight=1, epilog, nogc, extend
             ldr     x23, [sp, #0x58]
             ldp     x21, x22, [sp, #0x48]
             ldp     x19, x20, [sp, #0x38]
@@ -239,7 +227,7 @@ RWD00   dd  G_M19047_IG05 - G_M19047_IG02
            dd  G_M19047_IG10 - G_M19047_IG02
 
 
-; Total bytes of code 532, prolog size 24, PerfScore 81.02, instruction count 133, allocated bytes for code 532 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
+; Total bytes of code 508, prolog size 24, PerfScore 79.95, instruction count 127, allocated bytes for code 508 (MethodHash=02b3b598) for method System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -250,7 +238,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 133 (0x00085) Actual length = 532 (0x000214)
+  Function Length   : 127 (0x0007f) Actual length = 508 (0x0001fc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
-20 (-3.70%) : 383.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object
@@ -10,23 +10,21 @@
 ;
 ;  V00 arg0         [V00,T00] (  9,  6   )     ref  ->  x19         class-hnd single-def <System.RuntimeType>
 ;  V01 arg1         [V01,T01] (  8,  5   )     int  ->  x20         single-def
-;* V02 loc0         [V02,T12] (  0,  0   )   ubyte  ->  zero-ref   
-;  V03 loc1         [V03,T06] (  3,  2   )   ubyte  ->  x21        
+;* V02 loc0         [V02,T11] (  0,  0   )   ubyte  ->  zero-ref   
+;  V03 loc1         [V03,T04] (  3,  2   )   ubyte  ->  x21        
 ;* V04 loc2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Object[]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T05] (  3,  2.25)     ref  ->   x1         single-def "CASTCLASS eval op1"
-;  V07 tmp2         [V07,T13] (  3,  1.25)    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V08 tmp3         [V08,T03] (  5,  3.75)     ref  ->   x0         class-hnd "spilling QMark2" <System.Object[]>
-;  V09 tmp4         [V09,T07] (  3,  1.50)     ref  ->   x0        
-;  V10 tmp5         [V10,T08] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-;  V11 tmp6         [V11,T04] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
-;* V12 tmp7         [V12,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
-;* V13 tmp8         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
-;* V14 tmp9         [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;* V15 tmp10        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V16 tmp11        [V16,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
-;  V17 cse0         [V17,T10] (  3,  1.50)    long  ->   x0         "CSE - moderate"
-;  V18 cse1         [V18,T09] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V06 tmp1         [V06,T06] (  3,  1.50)     ref  ->   x0        
+;  V07 tmp2         [V07,T07] (  3,  1.50)     ref  ->  x20         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+;  V08 tmp3         [V08,T03] (  4,  2   )     ref  ->  x20         class-hnd single-def "Inline stloc first use temp" <System.Object>
+;* V09 tmp4         [V09,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+;* V10 tmp5         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
+;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;* V12 tmp7         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
+;  V13 tmp8         [V13,T02] (  5,  5   )     ref  ->   x0         "Single return block return value"
+;  V14 tmp9         [V14,T05] (  2,  2   )     ref  ->   x1         single-def "argument with side effect"
+;  V15 cse0         [V15,T09] (  3,  1.50)    long  ->   x0         "CSE - moderate"
+;  V16 cse1         [V16,T08] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
 ;
 ; Lcl frame size = 8
 
@@ -94,7 +92,7 @@ G_M32569_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             b       G_M32569_IG07
@@ -105,16 +103,18 @@ G_M32569_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #27
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x1, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x0, [x1]
             ; gcrRegs +[x0]
+            ; byrRegs -[x0]
                        ;; size=36 bbWeight=0.50 PerfScore 3.75
 G_M32569_IG07:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                      ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
@@ -124,10 +124,10 @@ G_M32569_IG08:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_NEWARR_1_OBJ
+            bl      CORINFO_HELP_NEWARR_1_MAYBEFROZEN
             ; gcrRegs -[x19] +[x0]
             ; gcr arg pop 0
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=32 bbWeight=0.50 PerfScore 3.00
 G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
@@ -135,18 +135,20 @@ G_M32569_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             mov     w1, #28
-            bl      CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
+            bl      CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE_DYNAMICCLASS
+            ; byrRegs +[x0]
             ; gcr arg pop 0
             movz    x0, #0xD1FFAB1E      // data for <unknown class>:<unknown field>
+            ; byrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             ldr     x0, [x0]
             ; gcrRegs +[x0]
-            b       G_M32569_IG19
+            b       G_M32569_IG16
                       ;; size=40 bbWeight=0.50 PerfScore 4.25
 G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
-            cbz     w20, G_M32569_IG14
+            cbz     w20, G_M32569_IG11
             mov     x0, x19
             ; gcrRegs +[x0]
             mov     w1, w20
@@ -159,43 +161,32 @@ G_M32569_IG10:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            cbz     x0, G_M32569_IG13
-                       ;; size=40 bbWeight=0.50 PerfScore 4.50
-G_M32569_IG11:        ; bbWeight=0.25, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
-            ldr     x2, [x0]
-            movz    x3, #0xD1FFAB1E
-            movk    x3, #0xD1FFAB1E LSL #16
-            movk    x3, #0xD1FFAB1E LSL #32
-            cmp     x2, x3
-            beq     G_M32569_IG13
-                       ;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M32569_IG12:        ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+            movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
-            mov     x0, x3
-            bl      CORINFO_HELP_CHKCASTARRAY
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_CHKCASTINTERFACE
             ; gcrRegs -[x1] +[x0]
             ; gcr arg pop 0
-                      ;; size=8 bbWeight=0.12 PerfScore 0.19
-G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG19
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+            b       G_M32569_IG16
+                       ;; size=56 bbWeight=0.50 PerfScore 5.75
+G_M32569_IG11:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0] +[x19]
             ldr     x0, [x19, #0x10]
-            cbz     x0, G_M32569_IG16
+            cbz     x0, G_M32569_IG13
             bl      <unknown method>
             ; gcrRegs +[x0]
             ; gcr arg pop 0
             mov     x20, x0
             ; gcrRegs +[x20]
-            cbz     x20, G_M32569_IG16
+            cbz     x20, G_M32569_IG13
             ldr     x0, [x20]
             ; gcrRegs -[x0]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            beq     G_M32569_IG15
+            beq     G_M32569_IG12
             movz    x1, #8
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -209,10 +200,10 @@ G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             ; gcrRegs -[x0 x19]
             ; gcr arg pop 0
                        ;; size=80 bbWeight=0.50 PerfScore 10.00
-G_M32569_IG15:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
-            b       G_M32569_IG17
+G_M32569_IG12:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+            b       G_M32569_IG14
                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M32569_IG13:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20] +[x19]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -226,7 +217,7 @@ G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
             mov     x20, x0
             ; gcrRegs +[x20]
                        ;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M32569_IG14:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             mov     x0, x20
             ; gcrRegs +[x0]
@@ -236,14 +227,14 @@ G_M32569_IG17:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             ldr     x1, [x1]
             ldr     wzr, [x0]
                        ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M32569_IG18:        ; bbWeight=0.50, epilog, nogc, extend
+G_M32569_IG15:        ; bbWeight=0.50, epilog, nogc, extend
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
             ldp     fp, lr, [sp], #0x30
             br      x1
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M32569_IG16:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x20]
             ldr     x21, [sp, #0x28]
             ldp     x19, x20, [sp, #0x18]
@@ -251,7 +242,7 @@ G_M32569_IG19:        ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
             ret     lr
                        ;; size=16 bbWeight=0.50 PerfScore 2.50
 
-; Total bytes of code 540, prolog size 24, PerfScore 64.94, instruction count 135, allocated bytes for code 540 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
+; Total bytes of code 520, prolog size 24, PerfScore 64.00, instruction count 130, allocated bytes for code 520 (MethodHash=915d80c6) for method System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -262,7 +253,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 135 (0x00087) Actual length = 540 (0x00021c)
+  Function Length   : 130 (0x00082) Actual length = 520 (0x000208)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
  
+40 (+21.28%) : 2054.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTailSystem.__Canon:Microsoft.FSharp.Collections.FSharpList`1System.__Canon
@@ -7,62 +7,78 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T09] (  5,  7.80)    long  ->  x20         single-def
-;  V01 arg0         [V01,T06] (  5, 11   )     ref  ->  x19         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V00 TypeCtx      [V00,T08] (  7, 12.60)    long  ->  x19         single-def
+;  V01 arg0         [V01,T09] (  5, 11   )     ref  ->  x20         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;  V02 arg1         [V02,T02] (  5, 18   )     ref  ->   x2         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;* V03 loc0         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V04 loc1         [V04,T10] (  2,  8   )     ref  ->  x21         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V05 loc2         [V05,T11] (  2,  8   )     ref  ->  x22         class-hnd <System.__Canon>
-;  V06 loc3         [V06,T07] (  3, 12   )     ref  ->   x0         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V04 loc1         [V04,T11] (  2,  8   )     ref  ->  x21         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V05 loc2         [V05,T12] (  2,  8   )     ref  ->  x22         class-hnd <System.__Canon>
+;  V06 loc3         [V06,T10] (  3, 12   )     ref  ->   x0         class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V08 tmp1         [V08,T12] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
+;  V08 tmp1         [V08,T04] (  3, 16   )    long  ->  x23         "spilling helperCall"
 ;* V09 tmp2         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp3         [V10,T00] (  3, 24   )    long  ->  x23         "argument with side effect"
-;  V11 tmp4         [V11,T05] (  2, 16   )     ref  ->   x2         "argument with side effect"
-;  V12 cse0         [V12,T08] (  2,  8   )    long  ->  x23         "CSE - aggressive"
-;  V13 cse1         [V13,T03] (  3, 20   )     ref  ->  x21         "CSE - aggressive"
-;  V14 rat0         [V14,T04] (  3, 16   )    long  ->  x23         "runtime lookup"
-;  V15 rat1         [V15,T01] (  3, 22.40)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V10 tmp3         [V10,T07] (  2, 16   )    long  ->  x24         "argument with side effect"
+;  V11 tmp4         [V11,T06] (  2, 16   )     ref  ->   x2         "argument with side effect"
+;  V12 cse0         [V12,T03] (  3, 20   )     ref  ->  x21         "CSE - aggressive"
+;  V13 rat0         [V13,T00] (  3, 22.40)    long  ->  x23         "fgMakeTemp is creating a new local variable"
+;  V14 rat1         [V14,T05] (  3, 16   )    long  ->  x24         "runtime lookup"
+;  V15 rat2         [V15,T01] (  3, 22.40)    long  ->  x24         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M63806_IG01:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x40]!
-            stp     x19, x20, [sp, #0x18]
-            stp     x21, x22, [sp, #0x28]
-            str     x23, [sp, #0x38]
+            stp     fp, lr, [sp, #-0x50]!
+            stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
+            stp     x23, x24, [sp, #0x40]
             mov     fp, sp
-            str     x0, [fp, #0x10]
-            mov     x20, x0
-            mov     x19, x1
-            ; gcrRegs +[x19]
+            str     x0, [fp, #0x18]
+            mov     x19, x0
+            mov     x20, x1
+            ; gcrRegs +[x20]
                        ;; size=32 bbWeight=8 PerfScore 52.00
-G_M63806_IG02:        ; bbWeight=8, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+G_M63806_IG02:        ; bbWeight=8, gcrefRegs=100004 {x2 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x2]
             ldr     x21, [x2, #0x10]
             ; gcrRegs +[x21]
-            cbz     x21, G_M63806_IG07
+            cbz     x21, G_M63806_IG10
                        ;; size=8 bbWeight=8 PerfScore 32.00
-G_M63806_IG03:        ; bbWeight=4, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=0000 {}, byref, isz
+G_M63806_IG03:        ; bbWeight=4, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=0000 {}, byref, isz
             ldr     x22, [x2, #0x08]
             ; gcrRegs +[x22]
-            ldr     x0, [x20, #0x38]
+            ldr     x0, [x19, #0x38]
             ldr     x23, [x0, #0x10]
             cbz     x23, G_M63806_IG05
                        ;; size=16 bbWeight=4 PerfScore 40.00
-G_M63806_IG04:        ; bbWeight=3.20, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
+G_M63806_IG04:        ; bbWeight=3.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x2]
             b       G_M63806_IG06
                        ;; size=4 bbWeight=3.20 PerfScore 3.20
-G_M63806_IG05:        ; bbWeight=0.80, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
-            mov     x0, x20
+G_M63806_IG05:        ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             mov     x23, x0
                        ;; size=24 bbWeight=0.80 PerfScore 2.80
-G_M63806_IG06:        ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref
+G_M63806_IG06:        ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x19, #0x38]
+            ldr     x24, [x0, #0x10]
+            cbz     x24, G_M63806_IG08
+                       ;; size=12 bbWeight=4 PerfScore 28.00
+G_M63806_IG07:        ; bbWeight=3.20, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+            b       G_M63806_IG09
+                       ;; size=4 bbWeight=3.20 PerfScore 3.20
+G_M63806_IG08:        ; bbWeight=0.80, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
+            mov     x0, x19
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            mov     x24, x0
+                       ;; size=24 bbWeight=0.80 PerfScore 2.80
+G_M63806_IG09:        ; bbWeight=4, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=0000 {}, byref
             mov     x0, x23
             movz    x1, #0xD1FFAB1E      // code for Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:get_Empty():Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]
             movk    x1, #0xD1FFAB1E LSL #16
@@ -72,7 +88,7 @@ G_M63806_IG06:        ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=00
             ; gcrRegs +[x0]
             mov     x2, x0
             ; gcrRegs +[x2]
-            mov     x0, x23
+            mov     x0, x24
             ; gcrRegs -[x0]
             mov     x1, x22
             ; gcrRegs +[x1]
@@ -82,33 +98,33 @@ G_M63806_IG06:        ; bbWeight=4, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=00
             ldr     x3, [x3]
             blr     x3
             ; gcrRegs -[x1-x2 x22] +[x0]
-            add     x14, x19, #16
+            add     x14, x20, #16
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x19]
+            ; gcrRegs -[x15 x20]
             ; byrRegs -[x14]
             mov     x2, x21
             ; gcrRegs +[x2]
-            mov     x19, x0
-            ; gcrRegs +[x19]
+            mov     x20, x0
+            ; gcrRegs +[x20]
             b       G_M63806_IG02
                        ;; size=80 bbWeight=4 PerfScore 68.00
-G_M63806_IG07:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M63806_IG10:        ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0 x2 x21]
-            mov     x0, x19
+            mov     x0, x20
             ; gcrRegs +[x0]
                        ;; size=4 bbWeight=1 PerfScore 0.50
-G_M63806_IG08:        ; bbWeight=1, epilog, nogc, extend
-            ldr     x23, [sp, #0x38]
-            ldp     x21, x22, [sp, #0x28]
-            ldp     x19, x20, [sp, #0x18]
-            ldp     fp, lr, [sp], #0x40
+G_M63806_IG11:        ; bbWeight=1, epilog, nogc, extend
+            ldp     x23, x24, [sp, #0x40]
+            ldp     x21, x22, [sp, #0x30]
+            ldp     x19, x20, [sp, #0x20]
+            ldp     fp, lr, [sp], #0x50
             ret     lr
-                        ;; size=20 bbWeight=1 PerfScore 6.00
+                      ;; size=20 bbWeight=1 PerfScore 5.00
 
-; Total bytes of code 188, prolog size 24, PerfScore 204.50, instruction count 47, allocated bytes for code 188 (MethodHash=873c06c1) for method Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
+; Total bytes of code 228, prolog size 24, PerfScore 237.50, instruction count 57, allocated bytes for code 228 (MethodHash=873c06c1) for method Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -119,7 +135,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 47 (0x0002f) Actual length = 188 (0x0000bc)
+  Function Length   : 57 (0x00039) Actual length = 228 (0x0000e4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -127,9 +143,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
-    D1 07       save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
     E6          save_next
-    C8 03       save_regp X#0 Z#3 (0x03); stp x19, x20, [sp, #24]
-    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+    E6          save_next
+    C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+    89          save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
+    E4          end
     E4          end
 
  
+44 (+32.35%) : 9211.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastVSystem.__Canon:Microsoft.FSharp.Core.FSharpValueOption`1System.__Canon
@@ -8,10 +8,10 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T02] (  5,  3.60)    long  ->   x0         single-def
+;  V00 TypeCtx      [V00,T02] (  7,  4.20)    long  ->   x0         single-def
 ;  V01 arg0         [V01,T01] (  5, 14.50)     ref  ->   x1         class-hnd <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;* V02 loc0         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V03 loc1         [V03,T06] (  2,  1   )     ref  ->   x0         class-hnd single-def <System.__Canon>
+;  V03 loc1         [V03,T07] (  2,  1   )     ref  ->  x19         class-hnd single-def <System.__Canon>
 ;* V04 loc2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -19,25 +19,28 @@
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
 ;* V10 tmp5         [V10    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
-;  V11 tmp6         [V11,T07] (  2,  1   )     ref  ->   x0         single-def "field V07.item (fldOffset=0x0)" P-INDEP
-;  V12 tmp7         [V12,T09] (  2,  1   )     int  ->   x1         single-def "field V07._tag (fldOffset=0x8)" P-INDEP
+;  V11 tmp6         [V11,T08] (  2,  1   )     ref  ->   x0         single-def "field V07.item (fldOffset=0x0)" P-INDEP
+;  V12 tmp7         [V12,T10] (  2,  1   )     int  ->   x1         single-def "field V07._tag (fldOffset=0x8)" P-INDEP
 ;* V13 tmp8         [V13    ] (  0,  0   )     ref  ->  zero-ref    "field V09.item (fldOffset=0x0)" P-DEP
 ;* V14 tmp9         [V14    ] (  0,  0   )     int  ->  zero-ref    "field V09._tag (fldOffset=0x8)" P-DEP
-;  V15 tmp10        [V15,T08] (  2,  1   )     ref  ->   x0         single-def "field V10.item (fldOffset=0x0)" P-INDEP
-;  V16 tmp11        [V16,T10] (  2,  1   )     int  ->   x1         single-def "field V10._tag (fldOffset=0x8)" P-INDEP
-;  V17 tmp12        [V17,T05] (  3,  1.50)  struct (16) [fp+0x18]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
+;  V15 tmp10        [V15,T09] (  2,  1   )     ref  ->   x0         single-def "field V10.item (fldOffset=0x0)" P-INDEP
+;  V16 tmp11        [V16,T11] (  2,  1   )     int  ->   x1         single-def "field V10._tag (fldOffset=0x8)" P-INDEP
+;  V17 tmp12        [V17,T06] (  3,  1.50)  struct (16) [fp+0x10]  do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon]>
 ;  V18 cse0         [V18,T00] (  4, 24   )     ref  ->   x2         "CSE - aggressive"
-;  V19 rat0         [V19,T04] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V19 rat0         [V19,T05] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V20 rat1         [V20,T03] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V21 rat2         [V21,T12] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V22 rat3         [V22,T04] (  2,  2   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 32
+; Lcl frame size = 24
 
-G_M49887_IG01:        ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M49887_IG01:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #-0x30]!
+            str     x19, [sp, #0x28]
             mov     fp, sp
-            stp     xzr, xzr, [fp, #0x18]    // [V17 tmp12], [V17 tmp12+0x08]
-            str     x0, [fp, #0x28]
-                       ;; size=16 bbWeight=8 PerfScore 28.00
+            stp     xzr, xzr, [fp, #0x10]    // [V17 tmp12], [V17 tmp12+0x08]
+            str     x0, [fp, #0x20]
+                       ;; size=20 bbWeight=8 PerfScore 36.00
 G_M49887_IG02:        ; bbWeight=8, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x1]
             ldr     x2, [x1, #0x10]
@@ -64,7 +67,7 @@ G_M49887_IG06:        ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
             mov     x1, x0
                        ;; size=20 bbWeight=0.10 PerfScore 0.30
@@ -77,38 +80,54 @@ G_M49887_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             blr     x1
             ; gcrRegs +[x0]
             ; gcr arg pop 0
-            stp     x0, x1, [fp, #0x18]   // [V17 tmp12], [V17 tmp12+0x08]
-            ldr     x0, [fp, #0x18]    // [V17 tmp12]
-            ldr     w1, [fp, #0x20]    // [V17 tmp12+0x08]
+            stp     x0, x1, [fp, #0x10]    // [V17 tmp12], [V17 tmp12+0x08]
+            ldr     x0, [fp, #0x10]    // [V17 tmp12]
+            ldr     w1, [fp, #0x18]    // [V17 tmp12+0x08]
                      ;; size=36 bbWeight=0.50 PerfScore 5.50
 G_M49887_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x19, [sp, #0x28]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M49887_IG09:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+                     ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M49887_IG09:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0] +[x1]
-            ldr     x0, [x1, #0x08]
-            ; gcrRegs +[x0]
-            mov     w1, #1
+            ldr     x19, [x1, #0x08]
+            ; gcrRegs +[x19]
+            ldr     x1, [x0, #0x38]
             ; gcrRegs -[x1]
-                       ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M49887_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x1, [x1, #0x10]
+            cbnz    x1, G_M49887_IG11
+                       ;; size=16 bbWeight=0.50 PerfScore 5.00
+G_M49887_IG10:        ; bbWeight=0.10, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=16 bbWeight=0.10 PerfScore 0.25
+G_M49887_IG11:        ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            mov     w1, #1
+            mov     x0, x19
+            ; gcrRegs +[x0]
+                       ;; size=8 bbWeight=0.50 PerfScore 0.50
+G_M49887_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+            ldr     x19, [sp, #0x28]
             ldp     fp, lr, [sp], #0x30
             ret     lr
-                       ;; size=8 bbWeight=0.50 PerfScore 1.00
+                        ;; size=12 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 136, prolog size 16, PerfScore 95.45, instruction count 34, allocated bytes for code 136 (MethodHash=bb143d20) for method Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
+; Total bytes of code 180, prolog size 20, PerfScore 109.45, instruction count 45, allocated bytes for code 180 (MethodHash=bb143d20) for method Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
   >> Start offset   : 0x000000 (not in unwind data)
   >>   End offset   : 0xd1ffab1e (not in unwind data)
-  Code Words        : 1
+  Code Words        : 2
   Epilog Count      : 2
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 34 (0x00022) Actual length = 136 (0x000088)
+  Function Length   : 45 (0x0002d) Actual length = 180 (0x0000b4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -119,7 +138,10 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    D0 05       save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
     85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
     E4          end
     E4          end
+    E4          end
+    E4          end
 
  
+48 (+32.43%) : 7532.dasm - Internal.Utilities.Library.ResultOrException:otherwiseSystem.__Canon:Internal.Utilities.Library.ResultOrException`1System.__Canon
@@ -8,9 +8,9 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 RetBuf       [V00,T02] (  4,  3   )   byref  ->  x20         single-def
-;  V01 TypeCtx      [V01,T01] (  5,  3.60)    long  ->   x0         single-def
-;  V02 arg0         [V02,T03] (  4,  3   )     ref  ->   x2         class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
+;  V00 RetBuf       [V00,T03] (  4,  3   )   byref  ->  x21         single-def
+;  V01 TypeCtx      [V01,T01] (  7,  4.80)    long  ->  x20         single-def
+;  V02 arg0         [V02,T04] (  4,  3   )     ref  ->  x22         class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]]>
 ;  V03 arg1         [V03,T00] (  4,  7   )   byref  ->  x19         ld-addr-op single-def
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 loc1         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -19,83 +19,101 @@
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    "field V03._exception (fldOffset=0x8)" P-INDEP
 ;* V09 tmp5         [V09    ] (  0,  0   )     int  ->  zero-ref    "field V03._tag (fldOffset=0x10)" P-INDEP
 ;* V10 tmp6         [V10    ] (  0,  0   )  struct (24) zero-ref    "Promoted implicit byref" <Internal.Utilities.Library.ResultOrException`1[System.__Canon]>
-;  V11 tmp7         [V11,T06] (  2,  2   )    long  ->   x0         "argument with side effect"
-;  V12 rat0         [V12,T05] (  3,  2   )    long  ->   x0         "runtime lookup"
-;  V13 rat1         [V13,T04] (  3,  2.80)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V11 tmp7         [V11,T07] (  2,  2   )    long  ->   x0         "argument with side effect"
+;* V12 rat0         [V12,T08] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V13 rat1         [V13,T02] (  2,  4   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V14 rat2         [V14,T06] (  3,  2   )    long  ->   x0         "runtime lookup"
+;  V15 rat3         [V15,T05] (  3,  2.80)    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
 G_M63339_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x30]!
+            stp     fp, lr, [sp, #-0x40]!
             stp     x19, x20, [sp, #0x20]
+            stp     x21, x22, [sp, #0x30]
             mov     fp, sp
             str     x0, [fp, #0x18]
+            mov     x20, x0
+            mov     x22, x1
+            ; gcrRegs +[x22]
             mov     x19, x2
             ; byrRegs +[x19]
-            mov     x20, x8
-            ; byrRegs +[x20]
-            mov     x2, x1
-            ; gcrRegs +[x2]
-                       ;; size=28 bbWeight=1 PerfScore 5.00
-G_M63339_IG02:        ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=180000 {x19 x20}, byref, isz
-            ldr     w1, [x19, #0x10]
-            cmp     w1, #1
-            beq     G_M63339_IG08
-                       ;; size=12 bbWeight=1 PerfScore 4.50
-G_M63339_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
-            ; gcrRegs -[x2]
-            ldr     x1, [x0, #0x38]
-            ldr     x2, [x1, #0x10]
-            cbz     x2, G_M63339_IG05
-                       ;; size=12 bbWeight=0.50 PerfScore 3.50
-G_M63339_IG04:        ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
-            mov     x0, x2
-            b       G_M63339_IG06
-                       ;; size=8 bbWeight=0.40 PerfScore 0.60
-G_M63339_IG05:        ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+            mov     x21, x8
+            ; byrRegs +[x21]
+                       ;; size=36 bbWeight=1 PerfScore 6.50
+G_M63339_IG02:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz
+            ldr     x0, [x20, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbnz    x0, G_M63339_IG04
+                       ;; size=12 bbWeight=1 PerfScore 7.00
+G_M63339_IG03:        ; bbWeight=0.20, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref
+            mov     x0, x20
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_METHOD
+            bl      CORINFO_HELP_MEMCPY
             ; gcr arg pop 0
-                       ;; size=16 bbWeight=0.10 PerfScore 0.25
-G_M63339_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref
+                      ;; size=20 bbWeight=0.20 PerfScore 0.60
+G_M63339_IG04:        ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=280000 {x19 x21}, byref, isz
+            ldr     w0, [x19, #0x10]
+            cmp     w0, #1
+            beq     G_M63339_IG10
+                       ;; size=12 bbWeight=1 PerfScore 4.50
+G_M63339_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref, isz
+            ; gcrRegs -[x22]
+            ldr     x0, [x20, #0x38]
+            ldr     x0, [x0, #0x10]
+            cbz     x0, G_M63339_IG07
+                       ;; size=12 bbWeight=0.50 PerfScore 3.50
+G_M63339_IG06:        ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
+            b       G_M63339_IG08
+                       ;; size=4 bbWeight=0.40 PerfScore 0.40
+G_M63339_IG07:        ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
+            mov     x0, x20
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_MEMCPY
+            ; gcr arg pop 0
+                       ;; size=20 bbWeight=0.10 PerfScore 0.30
+G_M63339_IG08:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=280000 {x19 x21}, byref
             ldr     x1, [x19]
             ; gcrRegs +[x1]
-            mov     x8, x20
+            mov     x8, x21
             ; byrRegs +[x8]
             movz    x2, #0xD1FFAB1E      // code for Internal.Utilities.Library.ResultOrException`1[System.__Canon]:NewResult(System.__Canon):Internal.Utilities.Library.ResultOrException`1[System.__Canon]
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
             ldr     x2, [x2]
                        ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M63339_IG07:        ; bbWeight=0.50, epilog, nogc, extend
+G_M63339_IG09:        ; bbWeight=0.50, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x30
+            ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=12 bbWeight=0.50 PerfScore 1.50
-G_M63339_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=100000 {x20}, gcvars, byref
-            ; gcrRegs -[x1] +[x2]
+                        ;; size=16 bbWeight=0.50 PerfScore 2.00
+G_M63339_IG10:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref
+            ; gcrRegs -[x1] +[x22]
             ; byrRegs -[x8 x19]
-            mov     x0, x2
+            mov     x0, x22
             ; gcrRegs +[x0]
-            mov     x8, x20
+            mov     x8, x21
             ; byrRegs +[x8]
             mov     x1, xzr
-            ldr     x2, [x2]
-            ; gcrRegs -[x2]
+            ldr     x2, [x22]
             ldr     x2, [x2, #0x48]
             ldr     x2, [x2, #0x20]
                        ;; size=24 bbWeight=0.50 PerfScore 5.25
-G_M63339_IG09:        ; bbWeight=0.50, epilog, nogc, extend
+G_M63339_IG11:        ; bbWeight=0.50, epilog, nogc, extend
+            ldp     x21, x22, [sp, #0x30]
             ldp     x19, x20, [sp, #0x20]
-            ldp     fp, lr, [sp], #0x30
+            ldp     fp, lr, [sp], #0x40
             br      x2
             ; gcr arg pop 0
-                      ;; size=12 bbWeight=0.50 PerfScore 1.50
+                       ;; size=16 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 148, prolog size 28, PerfScore 26.10, instruction count 37, allocated bytes for code 148 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
+; Total bytes of code 196, prolog size 36, PerfScore 36.05, instruction count 49, allocated bytes for code 196 (MethodHash=10ca0894) for method Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -106,7 +124,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 37 (0x00025) Actual length = 148 (0x000094)
+  Function Length   : 49 (0x00031) Actual length = 196 (0x0000c4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -117,9 +135,9 @@ Unwind Info:
   ---- Unwind codes ----
     E1          set_fp; mov fp, sp
     ---- Epilog start at index 1 ----
+    E6          save_next
     C8 04       save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
-    85          save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
-    E4          end
+    87          save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
     E4          end
     E4          end
     E4          end
  
  
  
Details
Improvements/regressions per collection
| Collection | 
Contexts with diffs | 
Improvements | 
Regressions | 
Same size | 
Improvements (bytes) | 
Regressions (bytes) | 
| benchmarks.run.windows.arm64.checked.mch | 
59 | 
14 | 
22 | 
23 | 
-212 | 
+1,048 | 
| benchmarks.run_pgo.windows.arm64.checked.mch | 
115 | 
61 | 
22 | 
32 | 
-1,732 | 
+1,052 | 
| benchmarks.run_tiered.windows.arm64.checked.mch | 
45 | 
8 | 
7 | 
30 | 
-192 | 
+408 | 
| coreclr_tests.run.windows.arm64.checked.mch | 
2 | 
1 | 
1 | 
0 | 
-4 | 
+24 | 
| libraries.crossgen2.windows.arm64.checked.mch | 
0 | 
0 | 
0 | 
0 | 
-0 | 
+0 | 
| libraries.pmi.windows.arm64.checked.mch | 
149 | 
4 | 
28 | 
117 | 
-136 | 
+2,856 | 
| libraries_tests.run.windows.arm64.Release.mch | 
31 | 
6 | 
7 | 
18 | 
-176 | 
+504 | 
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 
111 | 
21 | 
47 | 
43 | 
-176 | 
+3,256 | 
| realworld.run.windows.arm64.checked.mch | 
91 | 
11 | 
54 | 
26 | 
-132 | 
+4,484 | 
| smoke_tests.nativeaot.windows.arm64.checked.mch | 
0 | 
0 | 
0 | 
0 | 
-0 | 
+0 | 
 | 
603 | 
126 | 
188 | 
289 | 
-2,760 | 
+13,632 | 
Context information
| Collection | 
Diffed contexts | 
MinOpts | 
FullOpts | 
Missed, base | 
Missed, diff | 
| benchmarks.run.windows.arm64.checked.mch | 
5,739 | 
2 | 
5,737 | 
0 (0.00%) | 
4,533 (42.49%) | 
| benchmarks.run_pgo.windows.arm64.checked.mch | 
14,668 | 
12,042 | 
2,626 | 
0 (0.00%) | 
6,288 (29.45%) | 
| benchmarks.run_tiered.windows.arm64.checked.mch | 
14,697 | 
12,382 | 
2,315 | 
0 (0.00%) | 
4,894 (24.49%) | 
| coreclr_tests.run.windows.arm64.checked.mch | 
1,226 | 
3 | 
1,223 | 
0 (0.00%) | 
6,418 (79.83%) | 
| libraries.crossgen2.windows.arm64.checked.mch | 
7,813 | 
10 | 
7,803 | 
0 (0.00%) | 
3,253 (28.38%) | 
| libraries.pmi.windows.arm64.checked.mch | 
16,638 | 
0 | 
16,638 | 
0 (0.00%) | 
6,677 (28.16%) | 
| libraries_tests.run.windows.arm64.Release.mch | 
12,506 | 
12,064 | 
442 | 
0 (0.00%) | 
4,557 (26.10%) | 
| librariestestsnotieredcompilation.run.windows.arm64.Release.mch | 
6,328 | 
0 | 
6,328 | 
0 (0.00%) | 
4,872 (42.01%) | 
| realworld.run.windows.arm64.checked.mch | 
10,468 | 
1 | 
10,467 | 
0 (0.00%) | 
5,920 (35.27%) | 
| smoke_tests.nativeaot.windows.arm64.checked.mch | 
4,982 | 
3 | 
4,979 | 
0 (0.00%) | 
7,101 (56.90%) | 
 | 
95,065 | 
36,507 | 
58,558 | 
0 (0.00%) | 
54,513 (35.50%) | 
jit-analyze output
benchmarks.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1133696 (overridden on cmd)
Total bytes of diff: 1134532 (overridden on cmd)
Total bytes of delta: 836 (0.07 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         208 : 4252.dasm (19.62 % of base)
         144 : 4362.dasm (45.00 % of base)
          92 : 7870.dasm (13.37 % of base)
          80 : 4740.dasm (15.27 % of base)
          56 : 4302.dasm (36.84 % of base)
          44 : 1777.dasm (9.02 % of base)
          44 : 3973.dasm (15.28 % of base)
          44 : 4436.dasm (7.48 % of base)
          44 : 6892.dasm (9.57 % of base)
          40 : 1375.dasm (15.38 % of base)
          40 : 4527.dasm (4.18 % of base)
          40 : 4584.dasm (8.47 % of base)
          40 : 4817.dasm (11.11 % of base)
          40 : 6331.dasm (20.83 % of base)
          32 : 4781.dasm (7.69 % of base)
          24 : 579.dasm (5.45 % of base)
          16 : 9976.dasm (2.07 % of base)
           4 : 5231.dasm (0.51 % of base)
           4 : 8364.dasm (4.55 % of base)
           4 : 8453.dasm (5.56 % of base)
Top file improvements (bytes):
         -48 : 4392.dasm (-10.53 % of base)
         -36 : 1212.dasm (-21.43 % of base)
         -24 : 2878.dasm (-3.51 % of base)
         -24 : 85.dasm (-4.51 % of base)
         -20 : 386.dasm (-3.70 % of base)
         -20 : 7000.dasm (-5.49 % of base)
         -12 : 10403.dasm (-2.75 % of base)
          -4 : 1648.dasm (-0.82 % of base)
          -4 : 3793.dasm (-0.29 % of base)
          -4 : 6053.dasm (-0.58 % of base)
          -4 : 8622.dasm (-1.23 % of base)
          -4 : 10531.dasm (-2.78 % of base)
          -4 : 1224.dasm (-1.64 % of base)
          -4 : 1649.dasm (-0.89 % of base)
35 total files with Code Size differences (14 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
         208 (19.62 % of base) : 4252.dasm - System.Collections.Frozen.FrozenDictionary:GetExistingFrozenOrNewDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (FullOpts)
         144 (45.00 % of base) : 4362.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          92 (13.37 % of base) : 7870.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (FullOpts)
          80 (15.27 % of base) : 4740.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          56 (36.84 % of base) : 4302.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
          44 (9.57 % of base) : 6892.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd[System.ValueTuple`2[System.__Canon,System.__Canon]](System.__Canon,System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          44 (9.02 % of base) : 1777.dasm - System.Linq.Enumerable:MaxInteger[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,int]):int (FullOpts)
          44 (7.48 % of base) : 4436.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          44 (15.28 % of base) : 3973.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
          40 (15.38 % of base) : 1375.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
          40 (11.11 % of base) : 4817.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          40 (20.83 % of base) : 6331.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
          40 (8.47 % of base) : 4584.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
          40 (4.18 % of base) : 4527.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          32 (7.69 % of base) : 4781.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
          24 (5.45 % of base) : 579.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
          16 (2.07 % of base) : 9976.dasm - System.Security.Cryptography.X509Certificates.Tests.X509Certificate2Tests:GetMicrosoftComCert():System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
           4 (2.70 % of base) : 3386.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
           4 (5.56 % of base) : 8453.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
           4 (4.55 % of base) : 8364.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
Top method improvements (bytes):
         -48 (-10.53 % of base) : 4392.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -36 (-21.43 % of base) : 1212.dasm - Microsoft.Win32.SafeHandles.SafeChainEngineHandle:.cctor() (FullOpts)
         -24 (-3.51 % of base) : 2878.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (FullOpts)
         -24 (-4.51 % of base) : 85.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-5.49 % of base) : 7000.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
         -20 (-3.70 % of base) : 386.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -12 (-2.75 % of base) : 10403.dasm - System.Linq.Enumerable:<AggregateByIterator>g__PopulateDictionary|75_0[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-1.64 % of base) : 1224.dasm - Internal.Win32.Registry:.cctor() (FullOpts)
          -4 (-1.23 % of base) : 8622.dasm - Jil.Common.ExtensionMethods:ForEach[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
          -4 (-2.78 % of base) : 10531.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
          -4 (-0.89 % of base) : 1649.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.29 % of base) : 3793.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.82 % of base) : 1648.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.58 % of base) : 6053.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
Top method regressions (percentages):
         144 (45.00 % of base) : 4362.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          56 (36.84 % of base) : 4302.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
          40 (20.83 % of base) : 6331.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (FullOpts)
         208 (19.62 % of base) : 4252.dasm - System.Collections.Frozen.FrozenDictionary:GetExistingFrozenOrNewDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (FullOpts)
          40 (15.38 % of base) : 1375.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (FullOpts)
          44 (15.28 % of base) : 3973.dasm - System.Runtime.InteropServices.CollectionsMarshal:AsSpan[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
          80 (15.27 % of base) : 4740.dasm - System.Array:Sort[System.__Canon,System.__Canon](System.__Canon[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          92 (13.37 % of base) : 7870.dasm - System.Collections.Frozen.FrozenSet:GetExistingFrozenOrNewSet[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],byref):System.Collections.Frozen.FrozenSet`1[System.__Canon] (FullOpts)
          40 (11.11 % of base) : 4817.dasm - System.Array:Sort[System.__Canon](System.__Canon[],int,int,System.Collections.Generic.IComparer`1[System.__Canon]) (FullOpts)
          44 (9.57 % of base) : 6892.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd[System.ValueTuple`2[System.__Canon,System.__Canon]](System.__Canon,System.Func`3[System.__Canon,System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]):System.__Canon:this (FullOpts)
          44 (9.02 % of base) : 1777.dasm - System.Linq.Enumerable:MaxInteger[System.__Canon,int](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,int]):int (FullOpts)
          40 (8.47 % of base) : 4584.dasm - System.Dynamic.Utils.CollectionExtensions:ToReadOnly[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
          32 (7.69 % of base) : 4781.dasm - System.Collections.Immutable.ImmutableExtensions:AsOrderedCollection[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]):System.Collections.Immutable.IOrderedCollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
          44 (7.48 % of base) : 4436.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
           4 (5.56 % of base) : 8453.dasm - System.Convert:ToInt32(System.Object):int (FullOpts)
          24 (5.45 % of base) : 579.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
           4 (4.55 % of base) : 8364.dasm - System.Convert:ToInt32(System.Object,System.IFormatProvider):int (FullOpts)
          40 (4.18 % of base) : 4527.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
           4 (2.70 % of base) : 3386.dasm - Newtonsoft.Json.Linq.JContainer:IsMultiContent(System.Object):ubyte:this (FullOpts)
          16 (2.07 % of base) : 9976.dasm - System.Security.Cryptography.X509Certificates.Tests.X509Certificate2Tests:GetMicrosoftComCert():System.Security.Cryptography.X509Certificates.X509Certificate2 (FullOpts)
Top method improvements (percentages):
         -36 (-21.43 % of base) : 1212.dasm - Microsoft.Win32.SafeHandles.SafeChainEngineHandle:.cctor() (FullOpts)
         -48 (-10.53 % of base) : 4392.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:ReflectGetAttributes(System.Type):System.Attribute[] (FullOpts)
         -20 (-5.49 % of base) : 7000.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
         -24 (-4.51 % of base) : 85.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-3.70 % of base) : 386.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -24 (-3.51 % of base) : 2878.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (FullOpts)
          -4 (-2.78 % of base) : 10531.dasm - PerfLabTests.CastingPerf:IFooObjIsIFoo():this (FullOpts)
         -12 (-2.75 % of base) : 10403.dasm - System.Linq.Enumerable:<AggregateByIterator>g__PopulateDictionary|75_0[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-1.64 % of base) : 1224.dasm - Internal.Win32.Registry:.cctor() (FullOpts)
          -4 (-1.23 % of base) : 8622.dasm - Jil.Common.ExtensionMethods:ForEach[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Action`1[System.__Canon]) (FullOpts)
          -4 (-0.89 % of base) : 1649.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.82 % of base) : 1648.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.58 % of base) : 6053.dasm - System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:Create[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.__Canon],System.Func`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]] (FullOpts)
          -4 (-0.29 % of base) : 3793.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
  
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: 2273500 (overridden on cmd)
Total bytes of diff: 2272820 (overridden on cmd)
Total bytes of delta: -680 (-0.03 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
          52 : 17861.dasm (27.08 % of base)
          48 : 12713.dasm (36.36 % of base)
          48 : 12794.dasm (36.36 % of base)
          48 : 12895.dasm (36.36 % of base)
          48 : 16440.dasm (36.36 % of base)
          48 : 16515.dasm (36.36 % of base)
          48 : 18323.dasm (36.36 % of base)
          48 : 3453.dasm (36.36 % of base)
          48 : 5588.dasm (36.36 % of base)
          48 : 6887.dasm (36.36 % of base)
          48 : 6991.dasm (36.36 % of base)
          48 : 7664.dasm (36.36 % of base)
          48 : 12852.dasm (36.36 % of base)
          48 : 17966.dasm (36.36 % of base)
          48 : 18207.dasm (36.36 % of base)
          48 : 21073.dasm (36.36 % of base)
          48 : 2221.dasm (36.36 % of base)
          48 : 5232.dasm (36.36 % of base)
          48 : 6207.dasm (36.36 % of base)
          48 : 8341.dasm (36.36 % of base)
Top file improvements (bytes):
         -96 : 14610.dasm (-6.54 % of base)
         -40 : 14371.dasm (-29.41 % of base)
         -36 : 20776.dasm (-6.29 % of base)
         -36 : 16699.dasm (-14.52 % of base)
         -36 : 20542.dasm (-14.52 % of base)
         -32 : 17109.dasm (-13.11 % of base)
         -32 : 19473.dasm (-13.11 % of base)
         -28 : 12777.dasm (-3.30 % of base)
         -28 : 12781.dasm (-3.30 % of base)
         -28 : 14386.dasm (-5.15 % of base)
         -28 : 12558.dasm (-5.15 % of base)
         -28 : 13269.dasm (-5.15 % of base)
         -28 : 20053.dasm (-5.15 % of base)
         -28 : 2695.dasm (-3.30 % of base)
         -28 : 4943.dasm (-5.15 % of base)
         -28 : 7119.dasm (-5.15 % of base)
         -28 : 13258.dasm (-3.30 % of base)
         -28 : 17086.dasm (-3.30 % of base)
         -28 : 20537.dasm (-3.30 % of base)
         -28 : 3463.dasm (-3.30 % of base)
48 total files with Code Size differences (27 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
          52 (27.08 % of base) : 17861.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier1)
          48 (36.36 % of base) : 12713.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 12794.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 12895.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 16440.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 16515.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 18323.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 3453.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 5588.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 6887.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 6991.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 7664.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 12852.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 17966.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 18207.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 21073.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 2221.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 5232.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 6207.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 8341.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
         -96 (-6.54 % of base) : 14610.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -40 (-29.41 % of base) : 14371.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:<>m__Finally1():this (Tier1)
         -36 (-14.52 % of base) : 16699.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -36 (-14.52 % of base) : 20542.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -36 (-6.29 % of base) : 20776.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
         -32 (-13.11 % of base) : 17109.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -32 (-13.11 % of base) : 19473.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -28 (-3.30 % of base) : 12777.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 12781.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 14386.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 12558.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 13269.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 20053.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 2695.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 4943.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 7119.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 13258.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 17086.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 20537.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-3.30 % of base) : 3463.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
Top method regressions (percentages):
          48 (36.36 % of base) : 12713.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 12794.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 12895.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 16440.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 16515.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 18323.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 3453.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 5588.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 6887.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 6991.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 7664.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 12852.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 17966.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 18207.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 21073.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 2221.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 5232.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 6207.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 8341.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (36.36 % of base) : 9241.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (percentages):
         -40 (-29.41 % of base) : 14371.dasm - System.Linq.Enumerable+<CastIterator>d__66`1[System.__Canon]:<>m__Finally1():this (Tier1)
         -36 (-14.52 % of base) : 16699.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -36 (-14.52 % of base) : 20542.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -32 (-13.11 % of base) : 17109.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -32 (-13.11 % of base) : 19473.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -96 (-6.54 % of base) : 14610.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -36 (-6.29 % of base) : 20776.dasm - System.Threading.ThreadPoolWorkQueue:DispatchWorkItem(System.Object,System.Threading.Thread) (Tier1)
         -20 (-5.49 % of base) : 15163.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (Tier1)
         -28 (-5.15 % of base) : 14386.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 12558.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 13269.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 20053.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 4943.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 7119.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 3539.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 5239.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 6311.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 6507.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 7702.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -28 (-5.15 % of base) : 8821.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
  
benchmarks.run_tiered.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: 2189152 (overridden on cmd)
Total bytes of diff: 2189368 (overridden on cmd)
Total bytes of delta: 216 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         144 : 6008.dasm (45.00 % of base)
          56 : 12732.dasm (36.84 % of base)
          52 : 11981.dasm (27.08 % of base)
          48 : 1034.dasm (36.36 % of base)
          44 : 18818.dasm (9.73 % of base)
          40 : 11517.dasm (15.38 % of base)
          24 : 4911.dasm (5.45 % of base)
Top file improvements (bytes):
         -96 : 12121.dasm (-6.54 % of base)
         -24 : 1039.dasm (-4.51 % of base)
         -24 : 19659.dasm (-3.31 % of base)
         -20 : 2035.dasm (-3.70 % of base)
         -16 : 12657.dasm (-3.36 % of base)
          -4 : 11985.dasm (-0.89 % of base)
          -4 : 19628.dasm (-0.82 % of base)
          -4 : 11978.dasm (-1.15 % of base)
15 total files with Code Size differences (8 improved, 7 regressed), 28 unchanged.
Top method regressions (bytes):
         144 (45.00 % of base) : 6008.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
          56 (36.84 % of base) : 12732.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          52 (27.08 % of base) : 11981.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier1)
          48 (36.36 % of base) : 1034.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          44 (9.73 % of base) : 18818.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd[System.__Canon](System.__Canon,System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon):System.__Canon:this (Tier1)
          40 (15.38 % of base) : 11517.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          24 (5.45 % of base) : 4911.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
Top method improvements (bytes):
         -96 (-6.54 % of base) : 12121.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -24 (-3.31 % of base) : 19659.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (Tier1)
         -24 (-4.51 % of base) : 1039.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -20 (-3.70 % of base) : 2035.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
         -16 (-3.36 % of base) : 12657.dasm - BenchmarksGame.Mandelbrot_2:DoBench(int,System.IO.MemoryStream,ubyte) (Tier1-OSR)
          -4 (-0.89 % of base) : 11985.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
          -4 (-1.15 % of base) : 11978.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
          -4 (-0.82 % of base) : 19628.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
Top method regressions (percentages):
         144 (45.00 % of base) : 6008.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
          56 (36.84 % of base) : 12732.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          48 (36.36 % of base) : 1034.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          52 (27.08 % of base) : 11981.dasm - System.Array:Sort[System.__Canon](System.__Canon[],System.Comparison`1[System.__Canon]) (Tier1)
          40 (15.38 % of base) : 11517.dasm - System.Array:IndexOf[System.__Canon](System.__Canon[],System.__Canon,int,int):int (Tier1)
          44 (9.73 % of base) : 18818.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd[System.__Canon](System.__Canon,System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon):System.__Canon:this (Tier1)
          24 (5.45 % of base) : 4911.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (Tier1)
Top method improvements (percentages):
         -96 (-6.54 % of base) : 12121.dasm - System.Linq.Expressions.Utils:.cctor() (Tier0)
         -24 (-4.51 % of base) : 1039.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -20 (-3.70 % of base) : 2035.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (Tier1)
         -16 (-3.36 % of base) : 12657.dasm - BenchmarksGame.Mandelbrot_2:DoBench(int,System.IO.MemoryStream,ubyte) (Tier1-OSR)
         -24 (-3.31 % of base) : 19659.dasm - System.Attribute:InternalGetCustomAttributes(System.Reflection.PropertyInfo,System.Type,ubyte):System.Attribute[] (Tier1)
          -4 (-1.15 % of base) : 11978.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
          -4 (-0.89 % of base) : 11985.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1)
          -4 (-0.82 % of base) : 19628.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
  
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: 275388 (overridden on cmd)
Total bytes of diff: 275408 (overridden on cmd)
Total bytes of delta: 20 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
          24 : 20350.dasm (5.45 % of base)
Top file improvements (bytes):
          -4 : 503.dasm (-0.82 % of base)
2 total files with Code Size differences (1 improved, 1 regressed), 0 unchanged.
Top method regressions (bytes):
          24 (5.45 % of base) : 20350.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
          -4 (-0.82 % of base) : 503.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
Top method regressions (percentages):
          24 (5.45 % of base) : 20350.dasm - System.Linq.Enumerable:Concat[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
Top method improvements (percentages):
          -4 (-0.82 % of base) : 503.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
2 total methods with Code Size differences (1 improved, 1 regressed).
  
libraries.pmi.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1249004 (overridden on cmd)
Total bytes of diff: 1251724 (overridden on cmd)
Total bytes of delta: 2720 (0.22 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
        1364 : 7915.dasm (149.56 % of base)
         228 : 23216.dasm (66.28 % of base)
          76 : 12359.dasm (11.73 % of base)
          76 : 14516.dasm (22.35 % of base)
          76 : 2364.dasm (19.19 % of base)
          76 : 2367.dasm (16.52 % of base)
          68 : 11787.dasm (20.48 % of base)
          68 : 11789.dasm (15.32 % of base)
          64 : 16346.dasm (59.26 % of base)
          60 : 24252.dasm (31.25 % of base)
          52 : 16347.dasm (26.00 % of base)
          48 : 16617.dasm (11.01 % of base)
          48 : 19488.dasm (18.75 % of base)
          48 : 19492.dasm (9.68 % of base)
          48 : 19500.dasm (9.76 % of base)
          48 : 22784.dasm (16.22 % of base)
          48 : 23157.dasm (16.22 % of base)
          48 : 23173.dasm (15.79 % of base)
          40 : 24776.dasm (12.35 % of base)
          36 : 16357.dasm (14.52 % of base)
Top file improvements (bytes):
         -44 : 6035.dasm (-23.91 % of base)
         -44 : 6039.dasm (-17.74 % of base)
         -40 : 3372.dasm (-16.95 % of base)
          -8 : 24876.dasm (-1.68 % of base)
29 total files with Code Size differences (4 improved, 25 regressed), 35 unchanged.
Top method regressions (bytes):
        1364 (149.56 % of base) : 7915.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
         228 (66.28 % of base) : 23216.dasm - <StartupCode$FSharp-Core>.$Map:loop@860-43[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
          76 (16.52 % of base) : 2367.dasm - System.Configuration.Internal.WriteFileContext:FileIsWriteLocked(System.String):ubyte (FullOpts)
          76 (19.19 % of base) : 2364.dasm - System.Configuration.Internal.WriteFileContext:ValidateWriteAccess(System.String):this (FullOpts)
          76 (22.35 % of base) : 14516.dasm - System.Diagnostics.StackTraceSymbols:TryOpenFile(System.String):System.IO.Stream (FullOpts)
          76 (11.73 % of base) : 12359.dasm - System.Resources.RuntimeResourceSet:.ctor(System.String):this (FullOpts)
          68 (15.32 % of base) : 11789.dasm - System.Runtime.InteropServices.Marshal:CopyToManaged[System.__Canon](long,System.__Canon[],int,int) (FullOpts)
          68 (20.48 % of base) : 11787.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
          64 (59.26 % of base) : 16346.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
          60 (31.25 % of base) : 24252.dasm - Microsoft.FSharp.Collections.ListModule:TryLast[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpOption`1[System.__Canon] (FullOpts)
          52 (26.00 % of base) : 16347.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuations[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.Runtime.ExceptionServices.ExceptionDispatchInfo,Microsoft.FSharp.Control.AsyncReturn]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
          48 (15.79 % of base) : 23173.dasm - Microsoft.FSharp.Collections.MapTreeModule:current[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.MapTreeModule+MapIterator`2[System.__Canon,System.Nullable`1[int]]):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          48 (16.22 % of base) : 23157.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIterator[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Collections.MapTreeModule+MapIterator`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          48 (16.22 % of base) : 22784.dasm - Microsoft.FSharp.Collections.SetTreeModule:mkIterator[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon] (FullOpts)
          48 (9.68 % of base) : 19492.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallFilterThenInvoke[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Runtime.ExceptionServices.ExceptionDispatchInfo):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
          48 (18.75 % of base) : 19488.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
          48 (9.76 % of base) : 19500.dasm - Microsoft.FSharp.Control.AsyncPrimitives:TryFinally[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Control.FSharpAsync`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Core.Unit]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
          48 (11.01 % of base) : 16617.dasm - Microsoft.FSharp.Control.TaskBuilder:RunDynamic[System.__Canon](Microsoft.FSharp.Core.CompilerServices.ResumableCode`2[Microsoft.FSharp.Control.TaskStateMachineData`1[System.__Canon],System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon] (FullOpts)
          40 (12.35 % of base) : 24776.dasm - Microsoft.FSharp.Collections.SeqModule:go@978[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[System.__Canon,System.__Canon,int],Microsoft.FSharp.Core.Unit):int (FullOpts)
          36 (14.52 % of base) : 16357.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:HijackCheckThenCall[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
Top method improvements (bytes):
         -44 (-23.91 % of base) : 6035.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -44 (-17.74 % of base) : 6039.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
         -40 (-16.95 % of base) : 3372.dasm - System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
          -8 (-1.68 % of base) : 24876.dasm - Microsoft.FSharp.Collections.SeqModule:Sum$W[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
Top method regressions (percentages):
        1364 (149.56 % of base) : 7915.dasm - System.Text.Unicode.TextSegmentationUtility:GetLengthOfFirstExtendedGraphemeCluster[System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):int (FullOpts)
         228 (66.28 % of base) : 23216.dasm - <StartupCode$FSharp-Core>.$Map:loop@860-43[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]]],Microsoft.FSharp.Core.Unit):ubyte (FullOpts)
          64 (59.26 % of base) : 16346.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuation[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
          60 (31.25 % of base) : 24252.dasm - Microsoft.FSharp.Collections.ListModule:TryLast[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpOption`1[System.__Canon] (FullOpts)
          52 (26.00 % of base) : 16347.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:WithContinuations[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.Runtime.ExceptionServices.ExceptionDispatchInfo,Microsoft.FSharp.Control.AsyncReturn]):Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:this (FullOpts)
          76 (22.35 % of base) : 14516.dasm - System.Diagnostics.StackTraceSymbols:TryOpenFile(System.String):System.IO.Stream (FullOpts)
          68 (20.48 % of base) : 11787.dasm - System.Runtime.InteropServices.Marshal:CopyToNative[System.__Canon](System.__Canon[],int,long,int) (FullOpts)
          76 (19.19 % of base) : 2364.dasm - System.Configuration.Internal.WriteFileContext:ValidateWriteAccess(System.String):this (FullOpts)
          48 (18.75 % of base) : 19488.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.Nullable`1[int],Microsoft.FSharp.Core.FSharpFunc`2[System.Nullable`1[int],System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
          76 (16.52 % of base) : 2367.dasm - System.Configuration.Internal.WriteFileContext:FileIsWriteLocked(System.String):ubyte (FullOpts)
          48 (16.22 % of base) : 23157.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkIterator[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]]):Microsoft.FSharp.Collections.MapTreeModule+MapIterator`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          48 (16.22 % of base) : 22784.dasm - Microsoft.FSharp.Collections.SetTreeModule:mkIterator[System.__Canon](Microsoft.FSharp.Collections.SetTree`1[System.__Canon]):Microsoft.FSharp.Collections.SetTreeModule+SetIterator`1[System.__Canon] (FullOpts)
          48 (15.79 % of base) : 23173.dasm - Microsoft.FSharp.Collections.MapTreeModule:current[System.__Canon,System.Nullable`1[int]](Microsoft.FSharp.Collections.MapTreeModule+MapIterator`2[System.__Canon,System.Nullable`1[int]]):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
          68 (15.32 % of base) : 11789.dasm - System.Runtime.InteropServices.Marshal:CopyToManaged[System.__Canon](long,System.__Canon[],int,int) (FullOpts)
          36 (14.52 % of base) : 16357.dasm - Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon]:HijackCheckThenCall[System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
          32 (12.70 % of base) : 874.dasm - System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.Xml.XmlNode):this (FullOpts)
          32 (12.70 % of base) : 876.dasm - System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.Xml.XmlReader):this (FullOpts)
          40 (12.35 % of base) : 24776.dasm - Microsoft.FSharp.Collections.SeqModule:go@978[System.__Canon](System.Collections.Generic.IEnumerator`1[System.__Canon],System.Collections.Generic.IEnumerator`1[System.__Canon],Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[System.__Canon,System.__Canon,int],Microsoft.FSharp.Core.Unit):int (FullOpts)
          32 (11.76 % of base) : 875.dasm - System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.Exception,System.Xml.XmlNode):this (FullOpts)
          32 (11.76 % of base) : 877.dasm - System.Configuration.ConfigurationErrorsException:.ctor(System.String,System.Exception,System.Xml.XmlReader):this (FullOpts)
Top method improvements (percentages):
         -44 (-23.91 % of base) : 6035.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:GetHashCode():int:this (FullOpts)
         -44 (-17.74 % of base) : 6039.dasm - System.ValueTuple`2[System.__Canon,System.Nullable`1[int]]:System.IValueTupleInternal.ToStringEnd():System.String:this (FullOpts)
         -40 (-16.95 % of base) : 3372.dasm - System.HashCode:Combine[System.__Canon,System.Nullable`1[int]](System.__Canon,System.Nullable`1[int]):int (FullOpts)
          -8 (-1.68 % of base) : 24876.dasm - Microsoft.FSharp.Collections.SeqModule:Sum$W[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon (FullOpts)
  
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: 2089172 (overridden on cmd)
Total bytes of diff: 2089500 (overridden on cmd)
Total bytes of delta: 328 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         144 : 2104.dasm (45.00 % of base)
          76 : 1437.dasm (32.20 % of base)
          76 : 2212.dasm (32.20 % of base)
          56 : 4707.dasm (31.82 % of base)
          56 : 2135.dasm (31.82 % of base)
          48 : 1084.dasm (33.33 % of base)
          48 : 4567.dasm (33.33 % of base)
Top file improvements (bytes):
         -52 : 1498.dasm (-32.50 % of base)
         -36 : 1106.dasm (-14.52 % of base)
         -36 : 4572.dasm (-14.52 % of base)
         -24 : 1110.dasm (-4.41 % of base)
         -24 : 4574.dasm (-4.41 % of base)
          -4 : 1691.dasm (-3.33 % of base)
13 total files with Code Size differences (6 improved, 7 regressed), 18 unchanged.
Top method regressions (bytes):
         144 (45.00 % of base) : 2104.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
          76 (32.20 % of base) : 1437.dasm - System.IO.File:OpenRead(System.String):System.IO.FileStream (Instrumented Tier1)
          76 (32.20 % of base) : 2212.dasm - System.IO.File:OpenRead(System.String):System.IO.FileStream (Tier1)
          56 (31.82 % of base) : 4707.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          56 (31.82 % of base) : 2135.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          48 (33.33 % of base) : 1084.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (33.33 % of base) : 4567.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
Top method improvements (bytes):
         -52 (-32.50 % of base) : 1498.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
         -36 (-14.52 % of base) : 1106.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -36 (-14.52 % of base) : 4572.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -24 (-4.41 % of base) : 1110.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-4.41 % of base) : 4574.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
          -4 (-3.33 % of base) : 1691.dasm - Xunit.TestFrameworkOptions:GetValue[System.Nullable`1[ubyte]](System.String):System.Nullable`1[ubyte]:this (Tier0)
Top method regressions (percentages):
         144 (45.00 % of base) : 2104.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (Tier1)
          48 (33.33 % of base) : 1084.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          48 (33.33 % of base) : 4567.dasm - System.RuntimeType+RuntimeTypeCache:GetMemberCache[System.__Canon](byref):System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:this (Tier1)
          76 (32.20 % of base) : 1437.dasm - System.IO.File:OpenRead(System.String):System.IO.FileStream (Instrumented Tier1)
          76 (32.20 % of base) : 2212.dasm - System.IO.File:OpenRead(System.String):System.IO.FileStream (Tier1)
          56 (31.82 % of base) : 4707.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
          56 (31.82 % of base) : 2135.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier1)
Top method improvements (percentages):
         -52 (-32.50 % of base) : 1498.dasm - Xunit.TestFrameworkOptions:SetValue[System.Nullable`1[ubyte]](System.String,System.Nullable`1[ubyte]):this (Tier0)
         -36 (-14.52 % of base) : 1106.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -36 (-14.52 % of base) : 4572.dasm - System.Reflection.IntrospectionExtensions:GetTypeInfo(System.Type):System.Reflection.TypeInfo (Tier1)
         -24 (-4.41 % of base) : 1110.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
         -24 (-4.41 % of base) : 4574.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier1)
          -4 (-3.33 % of base) : 1691.dasm - Xunit.TestFrameworkOptions:GetValue[System.Nullable`1[ubyte]](System.String):System.Nullable`1[ubyte]:this (Tier0)
13 total methods with Code Size differences (6 improved, 7 regressed).
  
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1240428 (overridden on cmd)
Total bytes of diff: 1243508 (overridden on cmd)
Total bytes of delta: 3080 (0.25 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         332 : 3491.dasm (19.76 % of base)
         244 : 4912.dasm (20.40 % of base)
         144 : 69.dasm (45.00 % of base)
         136 : 6897.dasm (47.22 % of base)
         132 : 6599.dasm (17.46 % of base)
         128 : 2977.dasm (35.16 % of base)
         128 : 11193.dasm (23.53 % of base)
         108 : 8857.dasm (9.75 % of base)
          96 : 1991.dasm (24.49 % of base)
          92 : 8571.dasm (30.26 % of base)
          88 : 6436.dasm (12.09 % of base)
          84 : 2223.dasm (32.81 % of base)
          84 : 378.dasm (18.42 % of base)
          76 : 24.dasm (32.20 % of base)
          76 : 3471.dasm (11.38 % of base)
          68 : 11717.dasm (20.48 % of base)
          68 : 11211.dasm (19.10 % of base)
          64 : 10625.dasm (30.19 % of base)
          64 : 11187.dasm (16.67 % of base)
          64 : 6439.dasm (84.21 % of base)
Top file improvements (bytes):
         -32 : 3037.dasm (-9.41 % of base)
         -20 : 3066.dasm (-5.49 % of base)
         -20 : 2764.dasm (-20.83 % of base)
         -16 : 759.dasm (-1.76 % of base)
         -12 : 3383.dasm (-1.90 % of base)
          -8 : 2071.dasm (-7.41 % of base)
          -8 : 2074.dasm (-6.90 % of base)
          -8 : 11170.dasm (-0.53 % of base)
          -4 : 11890.dasm (-2.70 % of base)
          -4 : 321.dasm (-0.89 % of base)
          -4 : 488.dasm (-0.60 % of base)
          -4 : 991.dasm (-0.27 % of base)
          -4 : 3205.dasm (-0.78 % of base)
          -4 : 372.dasm (-0.90 % of base)
          -4 : 60.dasm (-0.82 % of base)
          -4 : 6780.dasm (-0.97 % of base)
          -4 : 7988.dasm (-0.96 % of base)
          -4 : 256.dasm (-0.68 % of base)
          -4 : 5884.dasm (-1.18 % of base)
          -4 : 7865.dasm (-1.18 % of base)
49 total files with Code Size differences (21 improved, 28 regressed), 20 unchanged.
Top method regressions (bytes):
         332 (19.76 % of base) : 3491.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         244 (20.40 % of base) : 4912.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
         144 (45.00 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
         136 (47.22 % of base) : 6897.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
         132 (17.46 % of base) : 6599.dasm - Microsoft.CodeAnalysis.BindingDiagnosticBag`1[System.__Canon]:AddDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.__Canon):ubyte:this (FullOpts)
         128 (23.53 % of base) : 11193.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
         128 (35.16 % of base) : 2977.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
         108 (9.75 % of base) : 8857.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetTheBestCandidateIndex[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,byref):int:this (FullOpts)
          96 (24.49 % of base) : 1991.dasm - Xunit.ConsoleClient.TransformFactory:Handler_DirectWrite(System.Xml.Linq.XElement,System.String) (FullOpts)
          92 (30.26 % of base) : 8571.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          88 (12.09 % of base) : 6436.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:GetTypesFromMemberMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]],System.Collections.Generic.IEqualityComparer`1[System.ReadOnlyMemory`1[ushort]]):System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
          84 (32.81 % of base) : 2223.dasm - Roslyn.Utilities.StandardFileSystem:OpenFile(System.String,int,int,int):System.IO.Stream:this (FullOpts)
          84 (18.42 % of base) : 378.dasm - Xunit.ConfigReader_Json:LoadFile(System.String):Xunit.TestAssemblyConfiguration (FullOpts)
          76 (32.20 % of base) : 24.dasm - Internal.Microsoft.Extensions.DependencyModel.FileWrapper:OpenRead(System.String):System.IO.Stream:this (FullOpts)
          76 (11.38 % of base) : 3471.dasm - System.Linq.EnumerableExtensions:SequenceEqual[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],System.Func`3[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],System.Collections.Generic.KeyValuePair`2[System.__Canon,int],ubyte]):ubyte (FullOpts)
          68 (20.48 % of base) : 11717.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          68 (19.10 % of base) : 11211.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
          64 (16.67 % of base) : 11187.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveInaccessibleTypeArguments[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],byref):this (FullOpts)
          64 (30.19 % of base) : 10625.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
          64 (61.54 % of base) : 5738.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
         -32 (-9.41 % of base) : 3037.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
         -20 (-20.83 % of base) : 2764.dasm - Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
         -20 (-5.49 % of base) : 3066.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
         -16 (-1.76 % of base) : 759.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -12 (-1.90 % of base) : 3383.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
          -8 (-7.41 % of base) : 2071.dasm - InterfaceForwarder:GetInt():int:this (FullOpts)
          -8 (-6.90 % of base) : 2074.dasm - InterfaceForwarder:SetInt(int):this (FullOpts)
          -8 (-0.53 % of base) : 11170.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformMemberOverloadResolution[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,byref,byref,ubyte,ubyte,ubyte):this (FullOpts)
          -4 (-0.68 % of base) : 256.dasm - DictionaryExtensions:ToDictionaryIgnoringDuplicateKeys[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-1.18 % of base) : 5884.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
          -4 (-2.70 % of base) : 11890.dasm - Microsoft.Interop.HashCode:Combine[System.Nullable`1[int],System.__Canon,System.__Canon](System.Nullable`1[int],System.__Canon,System.__Canon):int (FullOpts)
          -4 (-1.18 % of base) : 7865.dasm - Microsoft.Interop.HashCode:SequentialValuesHash[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (FullOpts)
          -4 (-0.78 % of base) : 3205.dasm - Microsoft.VisualStudio.Composition.Utilities:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],int):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.96 % of base) : 7988.dasm - Roslyn.Utilities.Hash:CombineValues[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):int (FullOpts)
          -4 (-0.97 % of base) : 6780.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.90 % of base) : 372.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 321.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.27 % of base) : 991.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.29 % of base) : 3134.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.82 % of base) : 60.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
Top method regressions (percentages):
          64 (84.21 % of base) : 6439.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          64 (61.54 % of base) : 5738.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:WithTrackingName[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon],System.String):Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon] (FullOpts)
          60 (48.39 % of base) : 5791.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Combine[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]](Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]],Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]]]] (FullOpts)
         136 (47.22 % of base) : 6897.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:OverloadResolutionResultIsValid[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte):ubyte (FullOpts)
         144 (45.00 % of base) : 69.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] (FullOpts)
          44 (37.93 % of base) : 4313.dasm - System.Linq.ImmutableArrayExtensions:Select[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.Generic.IEnumerable`1[System.__Canon] (FullOpts)
         128 (35.16 % of base) : 2977.dasm - System.Threading.Tasks.Dataflow.Internal.Common:ReleaseAllPostponedMessages[System.__Canon](System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon],System.Threading.Tasks.Dataflow.Internal.QueuedMap`2[System.__Canon,System.Threading.Tasks.Dataflow.DataflowMessageHeader],byref) (FullOpts)
          44 (33.33 % of base) : 5787.dasm - Microsoft.CodeAnalysis.IncrementalValueProviderExtensions:Collect[System.__Canon](Microsoft.CodeAnalysis.IncrementalValuesProvider`1[System.__Canon]):Microsoft.CodeAnalysis.IncrementalValueProvider`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
          84 (32.81 % of base) : 2223.dasm - Roslyn.Utilities.StandardFileSystem:OpenFile(System.String,int,int,int):System.IO.Stream:this (FullOpts)
          76 (32.20 % of base) : 24.dasm - Internal.Microsoft.Extensions.DependencyModel.FileWrapper:OpenRead(System.String):System.IO.Stream:this (FullOpts)
          92 (30.26 % of base) : 8571.dasm - System.Collections.Immutable.ImmutableInterlocked:GetOrAdd[System.__Canon,System.__Canon](byref,System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon (FullOpts)
          64 (30.19 % of base) : 10625.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:SkipBadSeparatedListTokensWithExpectedKind[System.__Canon,System.__Canon](byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon],System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`3[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ushort,ubyte],ushort,ushort):int:this (FullOpts)
          96 (24.49 % of base) : 1991.dasm - Xunit.ConsoleClient.TransformFactory:Handler_DirectWrite(System.Xml.Linq.XElement,System.String) (FullOpts)
         128 (23.53 % of base) : 11193.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveAllInterfaceMembers[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
          32 (23.53 % of base) : 1820.dasm - Xunit.Sdk.CollectionTrackerExtensions:AsTracker[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):Xunit.Sdk.CollectionTracker`1[System.__Canon] (FullOpts)
          48 (23.53 % of base) : 1105.dasm - Xunit.Sdk.ExceptionAggregator:RunAsync[System.__Canon](System.Func`1[System.__Canon]):System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)
          68 (20.48 % of base) : 11717.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveMethodsNotDeclaredStatic[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]]) (FullOpts)
         244 (20.40 % of base) : 4912.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxList[System.__Canon](byref,ushort,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte],System.Func`2[System.__Canon,System.__Canon],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon],ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
         332 (19.76 % of base) : 3491.dasm - System.Linq.Enumerable:SequenceEqual[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          68 (19.10 % of base) : 11211.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveStaticInstanceMismatches[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],ubyte) (FullOpts)
Top method improvements (percentages):
         -20 (-20.83 % of base) : 2764.dasm - Microsoft.VisualStudio.Composition.AttributedPartDiscovery+<>c:<CreatePart>b__6_0(System.Reflection.PropertyInfo):System.Collections.Generic.IEnumerable`1[System.Composition.ExportAttribute]:this (FullOpts)
         -32 (-9.41 % of base) : 3037.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:TryGetOpenGenericExport(Microsoft.VisualStudio.Composition.ImportDefinition,byref,byref):ubyte (FullOpts)
          -8 (-7.41 % of base) : 2071.dasm - InterfaceForwarder:GetInt():int:this (FullOpts)
          -8 (-6.90 % of base) : 2074.dasm - InterfaceForwarder:SetInt(int):this (FullOpts)
         -20 (-5.49 % of base) : 3066.dasm - System.Linq.OrderedEnumerable`1[System.__Canon]:GetCount(ubyte):int:this (FullOpts)
          -4 (-2.70 % of base) : 11890.dasm - Microsoft.Interop.HashCode:Combine[System.Nullable`1[int],System.__Canon,System.__Canon](System.Nullable`1[int],System.__Canon,System.__Canon):int (FullOpts)
         -12 (-1.90 % of base) : 3383.dasm - Microsoft.CodeAnalysis.PublicContract:IndexOfNullOrDuplicateItem[System.__Canon](System.Collections.Generic.IReadOnlyList`1[System.__Canon]):int (FullOpts)
         -16 (-1.76 % of base) : 759.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          -4 (-1.18 % of base) : 5884.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:CreateNameToMembersMap[System.ReadOnlyMemory`1[ushort],System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Object],System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]) (FullOpts)
          -4 (-1.18 % of base) : 7865.dasm - Microsoft.Interop.HashCode:SequentialValuesHash[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):int (FullOpts)
          -4 (-0.97 % of base) : 6780.dasm - Roslyn.Utilities.ISetExtensions:AddAll[System.__Canon](System.Collections.Generic.ISet`1[System.__Canon],System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte (FullOpts)
          -4 (-0.96 % of base) : 7988.dasm - Roslyn.Utilities.Hash:CombineValues[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],int):int (FullOpts)
          -4 (-0.90 % of base) : 372.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 321.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.82 % of base) : 60.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.78 % of base) : 3205.dasm - Microsoft.VisualStudio.Composition.Utilities:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],int):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.68 % of base) : 256.dasm - DictionaryExtensions:ToDictionaryIgnoringDuplicateKeys[System.__Canon,System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.60 % of base) : 488.dasm - System.Linq.Lookup`2[System.__Canon,System.__Canon]:Create[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Linq.Lookup`2[System.__Canon,System.__Canon] (FullOpts)
          -8 (-0.53 % of base) : 11170.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:PerformMemberOverloadResolution[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,byref,byref,ubyte,ubyte,ubyte):this (FullOpts)
          -4 (-0.29 % of base) : 3134.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
  
realworld.run.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 1943440 (overridden on cmd)
Total bytes of diff: 1947792 (overridden on cmd)
Total bytes of delta: 4352 (0.22 % of base)
    diff is a regression.
    relative diff is a regression.
Detail diffs
Top file regressions (bytes):
         504 : 6226.dasm (51.01 % of base)
         300 : 10637.dasm (30.86 % of base)
         288 : 5139.dasm (16.98 % of base)
         224 : 5888.dasm (49.56 % of base)
         224 : 5901.dasm (49.56 % of base)
         224 : 5877.dasm (49.56 % of base)
         224 : 5898.dasm (50.45 % of base)
         144 : 10217.dasm (16.36 % of base)
         144 : 14551.dasm (43.90 % of base)
         140 : 9319.dasm (12.92 % of base)
         116 : 7056.dasm (16.29 % of base)
         100 : 5899.dasm (29.76 % of base)
          96 : 9529.dasm (5.52 % of base)
          92 : 5896.dasm (26.14 % of base)
          84 : 8798.dasm (23.86 % of base)
          80 : 8785.dasm (8.81 % of base)
          76 : 4539.dasm (23.75 % of base)
          64 : 17791.dasm (84.21 % of base)
          56 : 5825.dasm (29.79 % of base)
          56 : 8346.dasm (14.29 % of base)
Top file improvements (bytes):
         -36 : 14111.dasm (-21.43 % of base)
         -24 : 85.dasm (-4.51 % of base)
         -20 : 383.dasm (-3.70 % of base)
         -16 : 13463.dasm (-1.75 % of base)
         -12 : 8392.dasm (-1.58 % of base)
          -4 : 13211.dasm (-0.90 % of base)
          -4 : 687.dasm (-0.89 % of base)
          -4 : 2843.dasm (-1.64 % of base)
          -4 : 3248.dasm (-0.30 % of base)
          -4 : 12913.dasm (-0.51 % of base)
          -4 : 686.dasm (-0.82 % of base)
41 total files with Code Size differences (11 improved, 30 regressed), 22 unchanged.
Top method regressions (bytes):
         504 (51.01 % of base) : 6226.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         300 (30.86 % of base) : 10637.dasm - FSharp.Compiler.CheckDeclarations+MutRecShapes:expandTyconsWithEnv[System.__Canon,System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         288 (16.98 % of base) : 5139.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         224 (50.45 % of base) : 5898.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 5901.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 5888.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 5877.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         144 (16.36 % of base) : 10217.dasm - Internal.Utilities.Collections.Tagged.MapTreeModule:add[System.__Canon,System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,System.__Canon,Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon]):Internal.Utilities.Collections.Tagged.MapTree`2[System.__Canon,System.__Canon] (FullOpts)
         144 (43.90 % of base) : 14551.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
         140 (12.92 % of base) : 9319.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:balance[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
         116 (16.29 % of base) : 7056.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:add[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
         100 (29.76 % of base) : 5899.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_unop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          96 (5.52 % of base) : 9529.dasm - FSharp.Compiler.NameResolution:AddResults[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          92 (26.14 % of base) : 5896.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_hash_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          84 (23.86 % of base) : 8798.dasm - FSharp.Compiler.NameResolution:OneResult[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          80 (8.81 % of base) : 8785.dasm - FSharp.Compiler.NameResolution:CollectAtMostOneResult[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          76 (23.75 % of base) : 4539.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          64 (84.21 % of base) : 17791.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
          56 (29.79 % of base) : 5825.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
          56 (14.29 % of base) : 8346.dasm - Internal.Utilities.Library.Extras+ListSet:hasDuplicates[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):ubyte (FullOpts)
Top method improvements (bytes):
         -36 (-21.43 % of base) : 14111.dasm - Microsoft.Win32.SafeHandles.SafeChainEngineHandle:.cctor() (FullOpts)
         -24 (-4.51 % of base) : 85.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-3.70 % of base) : 383.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -16 (-1.75 % of base) : 13463.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
         -12 (-1.58 % of base) : 8392.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
          -4 (-1.64 % of base) : 2843.dasm - Internal.Win32.Registry:.cctor() (FullOpts)
          -4 (-0.90 % of base) : 13211.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 687.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.30 % of base) : 3248.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)
          -4 (-0.82 % of base) : 686.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.51 % of base) : 12913.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
Top method regressions (percentages):
          64 (84.21 % of base) : 17791.dasm - System.Collections.Immutable.ImmutableArray`1[System.__Canon]:As[System.__Canon]():System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
         504 (51.01 % of base) : 6226.dasm - Internal.Utilities.Library.List:mapq[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
         224 (50.45 % of base) : 5898.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 5901.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_binop_ty3[System.__Canon,System.__Canon](System.__Canon,System.__Canon,System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 5888.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_compare_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         224 (49.56 % of base) : 5877.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_rel_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
         144 (43.90 % of base) : 14551.dasm - System.Linq.Enumerable:<ToArray>g__EnumerableToArray|296_0[System.ValueTuple`3[System.__Canon,System.__Canon,long]](System.Collections.Generic.IEnumerable`1[System.ValueTuple`3[System.__Canon,System.__Canon,long]]):System.ValueTuple`3[System.__Canon,System.__Canon,long][] (FullOpts)
          56 (36.84 % of base) : 11645.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (FullOpts)
          48 (32.43 % of base) : 7532.dasm - Internal.Utilities.Library.ResultOrException:otherwise[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,Internal.Utilities.Library.ResultOrException`1[System.__Canon]],Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          44 (32.35 % of base) : 9211.dasm - Microsoft.FSharp.Primitives.Basics.List:tryLastV[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Core.FSharpValueOption`1[System.__Canon] (FullOpts)
         300 (30.86 % of base) : 10637.dasm - FSharp.Compiler.CheckDeclarations+MutRecShapes:expandTyconsWithEnv[System.__Canon,System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          56 (29.79 % of base) : 5825.dasm - Internal.Utilities.Collections.QueueList:foldBack[System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Internal.Utilities.Collections.QueueList`1[System.__Canon],System.__Canon):System.__Canon (FullOpts)
         100 (29.76 % of base) : 5899.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_unop_ty[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          92 (26.14 % of base) : 5896.dasm - FSharp.Compiler.TcGlobals+TcGlobals:mk_hash_sig[System.__Canon](System.__Canon):System.Tuple`2[System.__Canon,System.__Canon]:this (FullOpts)
          84 (23.86 % of base) : 8798.dasm - FSharp.Compiler.NameResolution:OneResult[System.__Canon](Internal.Utilities.Library.ResultOrException`1[System.__Canon]):Internal.Utilities.Library.ResultOrException`1[System.__Canon] (FullOpts)
          76 (23.75 % of base) : 4539.dasm - Microsoft.FSharp.Primitives.Basics.List:rev[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          40 (21.28 % of base) : 2054.dasm - Microsoft.FSharp.Collections.PrivateListHelpers:appendToFreshConsTail[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          48 (19.05 % of base) : 2286.dasm - Microsoft.FSharp.Control.AsyncPrimitives:CallThenInvoke[System.__Canon,System.__Canon](Microsoft.FSharp.Control.AsyncActivation`1[System.__Canon],System.__Canon,Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon]):Microsoft.FSharp.Control.AsyncReturn (FullOpts)
         288 (16.98 % of base) : 5139.dasm - FSharp.Compiler.Import:multisetDiscriminateAndMap[System.__Canon,System.__Canon,System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon] (FullOpts)
          52 (16.46 % of base) : 3034.dasm - Internal.Utilities.Collections.AgedLookup`3[System.__Canon,System.__Canon,System.__Canon]:Add[System.__Canon,System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],System.__Canon,System.__Canon):Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]:this (FullOpts)
Top method improvements (percentages):
         -36 (-21.43 % of base) : 14111.dasm - Microsoft.Win32.SafeHandles.SafeChainEngineHandle:.cctor() (FullOpts)
         -24 (-4.51 % of base) : 85.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (FullOpts)
         -20 (-3.70 % of base) : 383.dasm - System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[] (FullOpts)
         -16 (-1.75 % of base) : 13463.dasm - System.Linq.Enumerable:Contains[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.__Canon,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):ubyte (FullOpts)
          -4 (-1.64 % of base) : 2843.dasm - Internal.Win32.Registry:.cctor() (FullOpts)
         -12 (-1.58 % of base) : 8392.dasm - Internal.Utilities.Collections.Tagged.SetTreeModule:remove[System.__Canon](System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon]):Internal.Utilities.Collections.Tagged.SetTree`1[System.__Canon] (FullOpts)
          -4 (-0.90 % of base) : 13211.dasm - System.Linq.Enumerable:All[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.89 % of base) : 687.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (FullOpts)
          -4 (-0.82 % of base) : 686.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (FullOpts)
          -4 (-0.51 % of base) : 12913.dasm - System.Linq.Enumerable:TryGetLast[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],byref):System.__Canon (FullOpts)
          -4 (-0.30 % of base) : 3248.dasm - System.Linq.Enumerable:ToDictionary[System.__Canon,System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (FullOpts)