Assembly Diffs

linux arm

Diffs are based on 2,237,690 contexts (827,812 MinOpts, 1,409,878 FullOpts).

MISSED contexts: 74,588 (3.23%)

Overall (-277,852 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,303,134 -1,294
benchmarks.run_pgo.linux.arm.checked.mch 61,262,128 +39,336
benchmarks.run_tiered.linux.arm.checked.mch 22,643,448 -1,326
coreclr_tests.run.linux.arm.checked.mch 321,791,116 -209,470
libraries.crossgen2.linux.arm.checked.mch 35,175,262 -5,168
libraries.pmi.linux.arm.checked.mch 49,615,946 -6,010
libraries_tests.run.linux.arm.Release.mch 242,762,120 -83,274
librariestestsnotieredcompilation.run.linux.arm.Release.mch 93,201,612 -8,510
realworld.run.linux.arm.checked.mch 13,613,446 -2,136

MinOpts (-137,640 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 10,797,602 -6,080
benchmarks.run_tiered.linux.arm.checked.mch 9,107,156 -74
coreclr_tests.run.linux.arm.checked.mch 212,730,134 -77,912
libraries_tests.run.linux.arm.Release.mch 122,002,944 -53,574

FullOpts (-140,212 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,913,878 -1,294
benchmarks.run_pgo.linux.arm.checked.mch 50,464,526 +45,416
benchmarks.run_tiered.linux.arm.checked.mch 13,536,292 -1,252
coreclr_tests.run.linux.arm.checked.mch 109,060,982 -131,558
libraries.crossgen2.linux.arm.checked.mch 35,174,032 -5,168
libraries.pmi.linux.arm.checked.mch 49,509,442 -6,010
libraries_tests.run.linux.arm.Release.mch 120,759,176 -29,700
librariestestsnotieredcompilation.run.linux.arm.Release.mch 83,117,792 -8,510
realworld.run.linux.arm.checked.mch 13,163,500 -2,136

Example diffs

benchmarks.run.linux.arm.checked.mch

-38 (-29.69%) : 13019.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)

@@ -8,36 +8,32 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T04] (  3,  3   )     ref  ->   r0         this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
-;  V01 arg1         [V01,T05] (  3,  3   )  struct (16) [sp+0x38]  do-not-enreg[S] single-def double-align <System.DateTimeOffset>
-;  V02 loc0         [V02    ] (  1,  1   )     int  ->  [sp+0x2C]  do-not-enreg[X] must-init addr-exposed ld-addr-op
+;  V00 this         [V00,T03] (  3,  3   )     ref  ->   r0         this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
+;  V01 arg1         [V01,T00] (  6,  6   )  struct (16) [sp+0x20]  do-not-enreg[SA] multireg-arg single-def double-align <System.DateTimeOffset>
+;  V02 loc0         [V02    ] (  1,  1   )     int  ->  [sp+0x14]  do-not-enreg[X] must-init addr-exposed ld-addr-op
 ;* V03 loc1         [V03    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Buffers.StandardFormat>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Span`1[ubyte]>
 ;  V06 tmp2         [V06,T01] (  4,  6   )     ref  ->   r0         class-hnd single-def "Inlining Arg" <ubyte[]>
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V08 tmp4         [V08,T08] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03._format (fldOffset=0x0)" P-INDEP
-;* V09 tmp5         [V09,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03._precision (fldOffset=0x1)" P-INDEP
+;* V08 tmp4         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03._format (fldOffset=0x0)" P-INDEP
+;* V09 tmp5         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03._precision (fldOffset=0x1)" P-INDEP
 ;* V10 tmp6         [V10    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref    single-def "field V05._length (fldOffset=0x4)" P-INDEP
-;  V12 tmp8         [V12,T06] (  3,  2   )   byref  ->   r1         "field V07._reference (fldOffset=0x0)" P-INDEP
-;  V13 tmp9         [V13,T07] (  3,  2   )     int  ->   r2         "field V07._length (fldOffset=0x4)" P-INDEP
-;  V14 tmp10        [V14,T02] (  3,  6   )  struct ( 4) [sp+0x28]  do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
-;  V15 tmp11        [V15,T00] (  5, 10   )  struct (16) [sp+0x18]  do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.DateTimeOffset>
-;  V16 tmp12        [V16,T03] (  3,  6   )  struct ( 8) [sp+0x10]  do-not-enreg[SF] must-init "argument with side effect" <System.Span`1[ubyte]>
+;  V12 tmp8         [V12,T04] (  3,  2   )   byref  ->   r1         "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V13 tmp9         [V13,T05] (  3,  2   )     int  ->   r2         "field V07._length (fldOffset=0x4)" P-INDEP
+;  V14 tmp10        [V14,T02] (  3,  6   )  struct ( 4) [sp+0x10]  do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
 ;
-; Lcl frame size = 48
+; Lcl frame size = 24
 
 G_M7377_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r2,r3}
             push    {r11,lr}
-            sub     sp, 48
-            add     r11, sp, 48
+            sub     sp, 24
+            add     r11, sp, 24
             movs    r1, 0
-            str     r1, [sp+0x2C]
-            str     r1, [sp+0x10]
             str     r1, [sp+0x14]
-                       ;; size=20 bbWeight=1 PerfScore 8.00
+                       ;; size=16 bbWeight=1 PerfScore 6.00
 G_M7377_IG02:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r0]
             ldr     r0, [r0+0x04]
@@ -58,49 +54,35 @@ G_M7377_IG04:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, by
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
 G_M7377_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {r1}, byref
             ; gcrRegs -[r0]
-            ldr     r0, [sp+0x38]
-            str     r0, [sp+0x18]
-            ldr     r0, [sp+0x3C]
-            str     r0, [sp+0x1C]
-            ldr     r0, [sp+0x40]
-            str     r0, [sp+0x20]
-            ldr     r0, [sp+0x44]
-            str     r0, [sp+0x24]
-            str     r1, [sp+0x10]
-            str     r2, [sp+0x14]
-            add     r0, sp, 44
+            str     r1, [sp]
+            str     r2, [sp+0x04]
+            add     r0, sp, 20
             str     r0, [sp+0x08]
             movs    r0, 0
-            strb    r0, [sp+0x28]
-                       ;; size=30 bbWeight=1 PerfScore 14.00
+            strb    r0, [sp+0x10]
+                       ;; size=14 bbWeight=1 PerfScore 6.00
 G_M7377_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; byrRegs -[r1]
-            strb    r0, [sp+0x29]
-            ldr     r0, [sp+0x18]
-            ldr     r1, [sp+0x1C]
-            ldr     r2, [sp+0x20]
-            ldr     r3, [sp+0x24]
-            ldr     lr, [sp+0x10]
-            ; byrRegs +[lr]
-            str     lr, [sp]
-            ldr     lr, [sp+0x14]
-            ; byrRegs -[lr]
-            str     lr, [sp+0x04]
-            ldrh    lr, [sp+0x28]
-            str     lr, [sp+0x0C]
+            strb    r0, [sp+0x11]
+            ldrh    r0, [sp+0x10]
+            str     r0, [sp+0x0C]
+            ldr     r0, [sp+0x20]
+            ldr     r1, [sp+0x24]
+            ldr     r2, [sp+0x28]
+            ldr     r3, [sp+0x2C]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
-                       ;; size=50 bbWeight=1 PerfScore 15.00
+                       ;; size=32 bbWeight=1 PerfScore 11.00
 G_M7377_IG07:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 48
+            add     sp, 24
             pop     {r11,lr}
             add     sp, 8
             bx      lr
                        ;; size=10 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 128, prolog size 20, PerfScore 46.50, instruction count 49, allocated bytes for code 128 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
+; Total bytes of code 90, prolog size 16, PerfScore 32.50, instruction count 35, allocated bytes for code 90 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -112,19 +94,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 64 (0x00040) Actual length = 128 (0x000080)
+  Function Length   : 45 (0x0002d) Actual length = 90 (0x00005a)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 6 (0x06)
   ---- Unwind codes ----
-    0C          add sp, sp, #48                     ; opsize 16
+    06          add sp, sp, #24                     ; opsize 16
     A8 00       pop {r11,lr}                        ; opsize 32
     EC 0C       pop {r2,r3}                         ; opsize 16
     FF          end
     ---- Epilog start at index 6 ----
-    0C          add sp, sp, #48                     ; opsize 16
+    06          add sp, sp, #24                     ; opsize 16
     A8 00       pop {r11,lr}                        ; opsize 32
     02          add sp, sp, #8                      ; opsize 16
     FD          end + nop                           ; opsize 16

-18 (-7.96%) : 3564.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)

@@ -8,45 +8,42 @@
 ; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] (  3,  6   )     ref  ->   r4         this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver>
-;  V01 arg1         [V01,T06] (  6,  8.50)     ref  ->   r5         class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite>
-;  V02 arg2         [V02,T11] (  4,  3   )  struct ( 8) [sp+0x38]  do-not-enreg[SA] multireg-arg single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext>
-;  V03 loc0         [V03,T07] (  5,  6.50)     ref  ->   r6         class-hnd <<unknown class>>
-;  V04 loc1         [V04,T02] (  5, 16.50)     int  ->   r7        
+;  V00 this         [V00,T05] (  3,  6   )     ref  ->   r5         this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver>
+;  V01 arg1         [V01,T04] (  5,  8   )     ref  ->   r4         class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite>
+;  V02 arg2         [V02,T08] (  4,  3   )  struct ( 8) [sp+0x30]  do-not-enreg[SA] multireg-arg single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext>
+;  V03 loc0         [V03,T06] (  5,  6.50)     ref  ->   r7         class-hnd <<unknown class>>
+;  V04 loc1         [V04,T00] (  7, 24.50)     int  ->   r6        
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T01] (  3, 24   )     ref  ->   r0         "arr expr"
-;* V07 tmp2         [V07,T08] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V08 tmp3         [V08,T03] (  2, 16   )     ref  ->   r1         "argument with side effect"
-;  V09 tmp4         [V09,T04] (  2, 16   )     ref  ->   r2         "argument with side effect"
-;  V10 tmp5         [V10,T00] (  4, 32   )     int  ->  [sp+0x0C]  spill-single-def "argument with side effect"
-;* V11 tmp6         [V11,T09] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V12 tmp7         [V12,T10] (  3,  6   )     ref  ->   r0         single-def "argument with side effect"
-;  V13 cse0         [V13,T13] (  2,  4.50)     ref  ->  [sp+0x08]  spill-single-def hoist "CSE - moderate"
-;  V14 cse1         [V14,T14] (  2,  4.50)     int  ->  r10         hoist "CSE - moderate"
-;  V15 cse2         [V15,T12] (  3,  5   )     int  ->   r8         "CSE - moderate"
+;  V06 tmp1         [V06,T01] (  3, 24   )     ref  ->   r1         "arr expr"
+;  V07 tmp2         [V07,T02] (  2, 16   )     ref  ->   r1         "argument with side effect"
+;  V08 tmp3         [V08,T03] (  2, 16   )     ref  ->   r2         "argument with side effect"
+;  V09 tmp4         [V09,T07] (  3,  6   )     ref  ->   r0         single-def "argument with side effect"
+;  V10 cse0         [V10,T12] (  3,  2.50)     ref  ->   r6         "CSE - aggressive"
+;  V11 cse1         [V11,T10] (  2,  4.50)     ref  ->   r9         hoist "CSE - aggressive"
+;  V12 cse2         [V12,T11] (  2,  4.50)     int  ->  r10         hoist "CSE - aggressive"
+;  V13 cse3         [V13,T09] (  3,  5   )     int  ->   r8         "CSE - aggressive"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 12
 
 G_M56674_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r2,r3}
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 20
-            add     r11, sp, 48
-            mov     r4, r0
-            ; gcrRegs +[r4]
-            mov     r5, r1
+            sub     sp, 12
+            add     r11, sp, 40
+            mov     r5, r0
             ; gcrRegs +[r5]
+            mov     r4, r1
+            ; gcrRegs +[r4]
                        ;; size=16 bbWeight=1 PerfScore 6.00
 G_M56674_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r5+0x20]
-            ; gcrRegs +[r0]
-            ldr     r0, [r0+0x04]
-            ; gcrRegs -[r0]
+            ldr     r6, [r4+0x20]
+            ; gcrRegs +[r6]
+            ldr     r0, [r6+0x04]
             cmp     r0, 0
             bne     SHORT G_M56674_IG04
                        ;; size=8 bbWeight=1 PerfScore 4.00
-G_M56674_IG03:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r4]
+G_M56674_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r5-r6]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movs    r1, 30
@@ -55,84 +52,73 @@ G_M56674_IG03:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
             blx     r3     // CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
-            ldr     r6, [r1]
-            ; gcrRegs +[r6]
+            ldr     r7, [r1]
+            ; gcrRegs +[r7]
             b       SHORT G_M56674_IG06
                        ;; size=32 bbWeight=0.50 PerfScore 5.00
-G_M56674_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r6] +[r4]
-            ldr     r1, [r5+0x20]
-            ; gcrRegs +[r1]
-            ldr     r1, [r1+0x04]
-            ; gcrRegs -[r1]
+G_M56674_IG04:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r7] +[r5-r6]
+            ldr     r1, [r6+0x04]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_NEWARR_1_OBJ
-            ; gcrRegs +[r0]
-            mov     r6, r0
-            ; gcrRegs +[r6]
-            movs    r7, 0
-            ldr     r8, [r6+0x04]
+            ; gcrRegs -[r6] +[r0]
+            mov     r7, r0
+            ; gcrRegs +[r7]
+            movs    r6, 0
+            ldr     r8, [r7+0x04]
             cmp     r8, 0
             ble     SHORT G_M56674_IG06
-            ldr     r9, [sp+0x38]
+            ldr     r9, [sp+0x30]
             ; gcrRegs +[r9]
-            str     r9, [sp+0x08]
-            ; GC ptr vars +{V13}
-            ldr     r10, [sp+0x3C]
-                       ;; size=48 bbWeight=0.50 PerfScore 7.50
-G_M56674_IG05:        ; bbWeight=4, gcVars=00002000 {V13}, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+            ldr     r10, [sp+0x34]
+                       ;; size=42 bbWeight=0.50 PerfScore 6.50
+G_M56674_IG05:        ; bbWeight=4, gcrefRegs=02B0 {r4 r5 r7 r9}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
-            mov     lr, r7
-            str     lr, [sp+0x0C]
-            ldr     r0, [r5+0x20]
-            ; gcrRegs +[r0]
-            ldr     r1, [r0+0x04]
-            cmp     lr, r1
-            bhs     SHORT G_M56674_IG08
-            adds    r0, 8
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            lsl     r1, lr, 2
-            ldr     r1, [r0+r1]
+            ldr     r1, [r4+0x20]
             ; gcrRegs +[r1]
-            mov     r0, r4
-            ; gcrRegs +[r0]
-            ; byrRegs -[r0]
+            ldr     r2, [r1+0x04]
+            cmp     r6, r2
+            bhs     SHORT G_M56674_IG08
+            adds    r1, 8
+            ; gcrRegs -[r1]
+            ; byrRegs +[r1]
+            lsls    r2, r6, 2
+            ldr     r1, [r1+r2]
+            ; gcrRegs +[r1]
+            ; byrRegs -[r1]
             mov     r2, r9
             ; gcrRegs +[r2]
             mov     r3, r10
-            movw    r12, 0xd1ff
-            movt    r12, 0xd1ff
-            ldr     r12, [r12]
-            ldr     r9, [r0]
-            ; gcrRegs -[r9]
-            blx     r12        // Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext,System.__Canon]:VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.__Canon:this
+            mov     r0, r5
+            ; gcrRegs +[r0]
+            movw    lr, 0xd1ff
+            movt    lr, 0xd1ff
+            ldr     lr, [lr]
+            ldr     r12, [r0]
+            blx     lr     // Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext,System.__Canon]:VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.__Canon:this
             ; gcrRegs -[r1-r2]
             mov     r2, r0
             ; gcrRegs +[r2]
-            ldr     r1, [sp+0x0C]  // [V10 tmp5]
-            mov     r0, r6
+            mov     r1, r6
+            mov     r0, r7
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_ARRADDR_ST
             ; gcrRegs -[r0 r2]
-            adds    r7, r7, 1
-            cmp     r8, r7
-            ldr     r9, [sp+0x08]  // [V13 cse0]
-            ; gcrRegs +[r9]
+            adds    r6, r6, 1
+            cmp     r8, r6
             bgt     SHORT G_M56674_IG05
-                       ;; size=72 bbWeight=4 PerfScore 108.00
-G_M56674_IG06:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[r4 r9]
-            ; GC ptr vars -{V13}
-            ldr     r0, [r5+0x1C]
+                       ;; size=60 bbWeight=4 PerfScore 96.00
+G_M56674_IG06:        ; bbWeight=1, gcrefRegs=0090 {r4 r7}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r5 r9]
+            ldr     r0, [r4+0x1C]
             ; gcrRegs +[r0]
             movs    r3, 0
-            str     r3, [sp]   // [V05 OutArgs]
-            mov     r3, r6
+            str     r3, [sp]
+            mov     r3, r7
             ; gcrRegs +[r3]
             mov     r1, 0x2000000
             movs    r2, 0
@@ -140,10 +126,10 @@ G_M56674_IG06:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6},
             ldr     lr, [lr+0x3C]
             ldr     lr, [lr+0x14]
             blx     lr     // <unknown method>
-            ; gcrRegs -[r3 r5-r6]
+            ; gcrRegs -[r3-r4 r7]
                        ;; size=28 bbWeight=1 PerfScore 10.00
 G_M56674_IG07:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 20
+            add     sp, 12
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,lr}
             add     sp, 8
             bx      lr
@@ -156,7 +142,7 @@ G_M56674_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 226, prolog size 12, PerfScore 144.50, instruction count 80, allocated bytes for code 226 (MethodHash=ece7229d) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)
+; Total bytes of code 208, prolog size 12, PerfScore 131.50, instruction count 75, allocated bytes for code 208 (MethodHash=ece7229d) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -168,19 +154,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 113 (0x00071) Actual length = 226 (0x0000e2)
+  Function Length   : 104 (0x00068) Actual length = 208 (0x0000d0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 5 (0x05)
   ---- Unwind codes ----
-    05          add sp, sp, #20                     ; opsize 16
+    03          add sp, sp, #12                     ; opsize 16
     DF          pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}  ; opsize 32
     EC 0C       pop {r2,r3}                         ; opsize 16
     FF          end
     ---- Epilog start at index 5 ----
-    05          add sp, sp, #20                     ; opsize 16
+    03          add sp, sp, #12                     ; opsize 16
     DF          pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}  ; opsize 32
     02          add sp, sp, #8                      ; opsize 16
     FD          end + nop                           ; opsize 16

-36 (-7.86%) : 29854.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (FullOpts)

@@ -9,11 +9,11 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 15, 13.50)     ref  ->   r4         this class-hnd single-def <System.Text.Json.Utf8JsonWriter>
-;  V01 arg1         [V01,T12] (  3,  3   )  struct (16) [sp+0x5C]  do-not-enreg[S] single-def <System.Guid>
+;  V01 arg1         [V01,T03] (  6,  6   )  struct (16) [sp+0x44]  do-not-enreg[SA] multireg-arg single-def <System.Guid>
 ;* V02 loc0         [V02    ] (  0,  0   )     int  ->  zero-ref   
 ;* V03 loc1         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Span`1[ubyte]>
 ;* V04 loc2         [V04    ] (  0,  0   )   ubyte  ->  zero-ref   
-;  V05 loc3         [V05    ] (  2,  2   )     int  ->  [sp+0x34]  do-not-enreg[X] addr-exposed ld-addr-op
+;  V05 loc3         [V05    ] (  2,  2   )     int  ->  [sp+0x1C]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V06 loc4         [V06,T01] ( 12, 10   )     int  ->   r5        
 ;* V07 loc5         [V07    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Buffers.StandardFormat>
 ;  V08 OutArgs      [V08    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,17 +22,17 @@
 ;* V11 tmp3         [V11    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp4         [V12    ] (  0,  0   )  struct ( 8) zero-ref    "Inline return value spill temp" <System.Span`1[ubyte]>
 ;  V13 tmp5         [V13,T05] (  9,  6.50)   byref  ->   r6         "Inline stloc first use temp"
-;  V14 tmp6         [V14,T03] ( 12,  9   )     int  ->   r7         "Inline stloc first use temp"
+;  V14 tmp6         [V14,T02] ( 12,  9   )     int  ->   r7         "Inline stloc first use temp"
 ;  V15 tmp7         [V15,T07] (  4,  6   )   byref  ->   r5         single-def "Inlining Arg"
-;  V16 tmp8         [V16,T11] (  9,  5.50)     ref  ->   r8         class-hnd single-def "Inline stloc first use temp" <System.Object>
+;  V16 tmp8         [V16,T10] (  9,  5.50)     ref  ->   r8         class-hnd single-def "Inline stloc first use temp" <System.Object>
 ;* V17 tmp9         [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;* V18 tmp10        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <<unknown class>>
-;  V19 tmp11        [V19    ] (  3,  1.50)  struct ( 8) [sp+0x2C]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-;  V20 tmp12        [V20,T15] (  4,  2   )     int  ->   r0         "Inline stloc first use temp"
-;  V21 tmp13        [V21,T19] (  3,  1.50)     int  ->   r1         "Inline stloc first use temp"
+;  V19 tmp11        [V19    ] (  3,  1.50)  struct ( 8) [sp+0x14]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
+;  V20 tmp12        [V20,T13] (  4,  2   )     int  ->   r0         "Inline stloc first use temp"
+;  V21 tmp13        [V21,T17] (  3,  1.50)     int  ->   r1         "Inline stloc first use temp"
 ;* V22 tmp14        [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "updating class info" <<unknown class>>
 ;* V23 tmp15        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <<unknown class>>
-;  V24 tmp16        [V24,T16] (  2,  2   )   byref  ->   r1         single-def "Inlining Arg"
+;  V24 tmp16        [V24,T14] (  2,  2   )   byref  ->   r1         single-def "Inlining Arg"
 ;* V25 tmp17        [V25    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V26 tmp18        [V26    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V27 tmp19        [V27    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
@@ -43,46 +43,43 @@
 ;  V32 tmp24        [V32,T04] (  4,  8   )     int  ->   r0         "Inlining Arg"
 ;* V33 tmp25        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;  V34 tmp26        [V34,T08] (  3,  6   )     int  ->   r8         "Inlining Arg"
-;  V35 tmp27        [V35,T13] (  2,  4   )   byref  ->   r5         single-def "Inlining Arg"
+;  V35 tmp27        [V35,T11] (  2,  4   )   byref  ->   r5         single-def "Inlining Arg"
 ;* V36 tmp28        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V37 tmp29        [V37    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V38 tmp30        [V38    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V39 tmp31        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V40 tmp32        [V40    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V03._reference (fldOffset=0x0)" P-INDEP
 ;* V41 tmp33        [V41    ] (  0,  0   )     int  ->  zero-ref    "field V03._length (fldOffset=0x4)" P-INDEP
-;* V42 tmp34        [V42,T21] (  0,  0   )   ubyte  ->  zero-ref    "field V07._format (fldOffset=0x0)" P-INDEP
-;* V43 tmp35        [V43,T22] (  0,  0   )   ubyte  ->  zero-ref    "field V07._precision (fldOffset=0x1)" P-INDEP
+;* V42 tmp34        [V42,T19] (  0,  0   )   ubyte  ->  zero-ref    "field V07._format (fldOffset=0x0)" P-INDEP
+;* V43 tmp35        [V43,T20] (  0,  0   )   ubyte  ->  zero-ref    "field V07._precision (fldOffset=0x1)" P-INDEP
 ;* V44 tmp36        [V44    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V10._reference (fldOffset=0x0)" P-INDEP
 ;* V45 tmp37        [V45    ] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x4)" P-INDEP
 ;* V46 tmp38        [V46    ] (  0,  0   )   byref  ->  zero-ref    "field V12._reference (fldOffset=0x0)" P-INDEP
 ;* V47 tmp39        [V47    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x4)" P-INDEP
 ;* V48 tmp40        [V48    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V17._reference (fldOffset=0x0)" P-INDEP
 ;* V49 tmp41        [V49    ] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x4)" P-INDEP
-;  V50 tmp42        [V50    ] (  2,  1   )   byref  ->  [sp+0x2C]  do-not-enreg[X] addr-exposed "field V19._reference (fldOffset=0x0)" P-DEP
-;  V51 tmp43        [V51    ] (  2,  1   )     int  ->  [sp+0x30]  do-not-enreg[X] addr-exposed "field V19._length (fldOffset=0x4)" P-DEP
-;  V52 tmp44        [V52,T20] (  2,  1   )   byref  ->   r6         single-def "field V27._reference (fldOffset=0x0)" P-INDEP
+;  V50 tmp42        [V50    ] (  2,  1   )   byref  ->  [sp+0x14]  do-not-enreg[X] addr-exposed "field V19._reference (fldOffset=0x0)" P-DEP
+;  V51 tmp43        [V51    ] (  2,  1   )     int  ->  [sp+0x18]  do-not-enreg[X] addr-exposed "field V19._length (fldOffset=0x4)" P-DEP
+;  V52 tmp44        [V52,T18] (  2,  1   )   byref  ->   r6         single-def "field V27._reference (fldOffset=0x0)" P-INDEP
 ;* V53 tmp45        [V53    ] (  0,  0   )     int  ->  zero-ref    "field V27._length (fldOffset=0x4)" P-INDEP
-;  V54 tmp46        [V54,T17] (  2,  2   )   byref  ->   r5         single-def "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V55 tmp47        [V55,T18] (  2,  2   )     int  ->   r8         "field V33._length (fldOffset=0x4)" P-INDEP
-;  V56 tmp48        [V56,T09] (  3,  6   )  struct ( 4) [sp+0x28]  do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
-;  V57 tmp49        [V57,T02] (  5, 10   )  struct (16) [sp+0x18]  do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Guid>
-;  V58 tmp50        [V58,T10] (  3,  6   )  struct ( 8) [sp+0x10]  do-not-enreg[SF] must-init "argument with side effect" <System.Span`1[ubyte]>
-;  V59 cse0         [V59,T14] (  3,  3   )     int  ->   r5         "CSE - moderate"
-;  V60 cse1         [V60,T06] ( 12,  6   )     ref  ->   r1         multi-def "CSE - aggressive"
+;  V54 tmp46        [V54,T15] (  2,  2   )   byref  ->   r5         single-def "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V55 tmp47        [V55,T16] (  2,  2   )     int  ->   r8         "field V33._length (fldOffset=0x4)" P-INDEP
+;  V56 tmp48        [V56,T09] (  3,  6   )  struct ( 4) [sp+0x10]  do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
+;  V57 cse0         [V57,T12] (  3,  3   )     int  ->   r5         "CSE - moderate"
+;  V58 cse1         [V58,T06] ( 12,  6   )     ref  ->   r1         multi-def "CSE - aggressive"
 ;
-; Lcl frame size = 60
+; Lcl frame size = 36
 
 G_M53232_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r1,r2,r3}
             push    {r4,r5,r6,r7,r8,r10,r11,lr}
-            sub     sp, 60
-            add     r11, sp, 84
+            sub     sp, 36
+            add     r11, sp, 60
             movs    r1, 0
-            str     r1, [sp+0x2C]
-            str     r1, [sp+0x10]
+            str     r1, [sp+0x14]
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=20 bbWeight=1 PerfScore 8.00
+                       ;; size=18 bbWeight=1 PerfScore 7.00
 G_M53232_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [r4+0x34]
             ldr     r1, [r4+0x24]
@@ -163,7 +160,7 @@ G_M53232_IG07:        ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0020 {r
             ; gcrRegs -[r0]
                        ;; size=46 bbWeight=0.50 PerfScore 7.50
 G_M53232_IG08:        ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0020 {r5}, byref
-            add     r1, sp, 44
+            add     r1, sp, 20
             mov     r0, r8
             ; gcrRegs +[r0]
             ldr     r3, [r8]
@@ -171,9 +168,9 @@ G_M53232_IG08:        ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0020 {r
             ldr     r3, [r3+0x14]
             blx     r3     // <unknown method>
             ; gcrRegs -[r0 r8]
-            ldr     r6, [sp+0x2C]
+            ldr     r6, [sp+0x14]
             ; byrRegs +[r6]
-            ldr     r7, [sp+0x30]
+            ldr     r7, [sp+0x18]
                        ;; size=18 bbWeight=0.50 PerfScore 4.00
 G_M53232_IG09:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0060 {r5 r6}, byref, isz
             ldr     r0, [r5+0x04]
@@ -247,42 +244,28 @@ G_M53232_IG15:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0060 {r5 r
             ; gcrRegs -[r0]
                        ;; size=22 bbWeight=0.50 PerfScore 3.50
 G_M53232_IG16:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0060 {r5 r6}, byref
-            ldr     r0, [sp+0x5C]
-            str     r0, [sp+0x18]
-            ldr     r0, [sp+0x60]
-            str     r0, [sp+0x1C]
-            ldr     r0, [sp+0x64]
-            str     r0, [sp+0x20]
-            ldr     r0, [sp+0x68]
-            str     r0, [sp+0x24]
-            str     r5, [sp+0x10]
-            str     r8, [sp+0x14]
-            add     r0, sp, 52
+            str     r5, [sp]
+            str     r8, [sp+0x04]
+            add     r0, sp, 28
             str     r0, [sp+0x08]
             movs    r0, 0
-            strb    r0, [sp+0x28]
-                       ;; size=32 bbWeight=1 PerfScore 14.00
+            strb    r0, [sp+0x10]
+                       ;; size=16 bbWeight=1 PerfScore 6.00
 G_M53232_IG17:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, byref, isz
             ; byrRegs -[r5]
-            strb    r0, [sp+0x29]
-            ldr     r0, [sp+0x18]
-            ldr     r1, [sp+0x1C]
-            ldr     r2, [sp+0x20]
-            ldr     r3, [sp+0x24]
-            ldr     lr, [sp+0x10]
-            ; byrRegs +[lr]
-            str     lr, [sp]
-            ldr     lr, [sp+0x14]
-            ; byrRegs -[lr]
-            str     lr, [sp+0x04]
-            ldrh    lr, [sp+0x28]
-            str     lr, [sp+0x0C]
+            strb    r0, [sp+0x11]
+            ldrh    r0, [sp+0x10]
+            str     r0, [sp+0x0C]
+            ldr     r0, [sp+0x44]
+            ldr     r1, [sp+0x48]
+            ldr     r2, [sp+0x4C]
+            ldr     r3, [sp+0x50]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // System.Buffers.Text.Utf8Formatter:TryFormat(System.Guid,System.Span`1[ubyte],byref,System.Buffers.StandardFormat):ubyte
             ldr     r3, [r4+0x24]
-            ldr     r2, [sp+0x34]
+            ldr     r2, [sp+0x1C]
             adds    r5, r3, r2
             str     r5, [r4+0x24]
             adds    r3, r5, 1
@@ -291,9 +274,9 @@ G_M53232_IG17:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0040 {r6}, by
             bhs     SHORT G_M53232_IG19
             movs    r3, 34
             strb    r3, [r6+r5]
-                       ;; size=70 bbWeight=1 PerfScore 25.00
+                       ;; size=52 bbWeight=1 PerfScore 21.00
 G_M53232_IG18:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 60
+            add     sp, 36
             pop     {r4,r5,r6,r7,r8,r10,r11,lr}
             add     sp, 12
             bx      lr
@@ -313,7 +296,7 @@ G_M53232_IG20:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 458, prolog size 18, PerfScore 123.00, instruction count 173, allocated bytes for code 458 (MethodHash=0c2e300f) for method System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (FullOpts)
+; Total bytes of code 422, prolog size 16, PerfScore 110.00, instruction count 160, allocated bytes for code 422 (MethodHash=0c2e300f) for method System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -325,19 +308,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 229 (0x000e5) Actual length = 458 (0x0001ca)
+  Function Length   : 211 (0x000d3) Actual length = 422 (0x0001a6)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 6 (0x06)
   ---- Unwind codes ----
-    0F          add sp, sp, #60                     ; opsize 16
+    09          add sp, sp, #36                     ; opsize 16
     AD F0       pop {r4,r5,r6,r7,r8,r10,r11,lr}     ; opsize 32
     EC 0E       pop {r1,r2,r3}                      ; opsize 16
     FF          end
     ---- Epilog start at index 6 ----
-    0F          add sp, sp, #60                     ; opsize 16
+    09          add sp, sp, #36                     ; opsize 16
     AD F0       pop {r4,r5,r6,r7,r8,r10,r11,lr}     ; opsize 32
     03          add sp, sp, #12                     ; opsize 16
     FD          end + nop                           ; opsize 16

+6 (+6.67%) : 9583.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)

@@ -16,12 +16,12 @@
 ;* V05 tmp4         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
 ;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
 ;  V07 cse0         [V07,T02] (  5,  5   )     ref  ->   r2         "CSE - aggressive"
-;  V08 cse1         [V08,T04] (  3,  3   )     ref  ->   r1         "CSE - aggressive"
+;  V08 cse1         [V08,T04] (  3,  3   )     ref  ->  [sp+0x04]  spill-single-def "CSE - aggressive"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M35133_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r4,lr}
+            push    {r2,r3,r4,lr}
             mov     r4, r0
             ; gcrRegs +[r4]
                        ;; size=4 bbWeight=1 PerfScore 2.00
@@ -51,31 +51,36 @@ G_M35133_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             ; gcrRegs +[r1]
             movs    r0, 0
             strh    r0, [r1+0x14]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            str     r3, [sp+0x04]
+            ; GC ptr vars +{V08}
             adds    r0, r1, 4
             ; byrRegs +[r0]
-            movw    r1, 0xd1ff
-            ; gcrRegs -[r1]
-            movt    r1, 0xd1ff
+            mov     r1, r3
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
             blx     r12        // CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[r4] +[r1]
+            ; gcrRegs -[r1 r4]
             ; byrRegs -[r0]
             add     r0, r2, 8
             ; byrRegs +[r0]
+            ldr     r1, [sp+0x04]  // [V08 cse1]
+            ; gcrRegs +[r1]
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
+            ; GC ptr vars -{V08}
             blx     r12        // CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[r1]
             ; byrRegs -[r0]
             movs    r3, 0
             str     r3, [r2+0x0C]
-                       ;; size=84 bbWeight=1 PerfScore 28.00
+                       ;; size=90 bbWeight=1 PerfScore 31.00
 G_M35133_IG03:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r4,pc}
+            pop     {r2,r3,r4,pc}
                        ;; size=2 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 90, prolog size 2, PerfScore 31.00, instruction count 31, allocated bytes for code 90 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
+; Total bytes of code 96, prolog size 2, PerfScore 34.00, instruction count 34, allocated bytes for code 96 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -87,12 +92,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 45 (0x0002d) Actual length = 90 (0x00005a)
+  Function Length   : 48 (0x00030) Actual length = 96 (0x000060)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    D4          pop {r4,lr}                         ; opsize 16
-    FF          end
+    ED 1C       pop {r2,r3,r4,lr}                   ; opsize 16
     FF          end
     FF          end
 

+16 (+10.81%) : 24885.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)

@@ -8,33 +8,31 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T03] (  2,  4   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
 ;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V04 tmp3         [V04,T05] (  4,  3.50)     ref  ->   r1        
+;  V04 tmp3         [V04,T04] (  4,  3.50)     ref  ->   r1        
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;  V06 tmp5         [V06,T02] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-;  V07 tmp6         [V07,T07] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp7         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    "field V05.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp8         [V09,T10] (  0,  0   )   ubyte  ->  zero-ref    "field V05.value (fldOffset=0x1)" P-INDEP
-;  V10 tmp9         [V10,T01] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp10        [V11,T08] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V12 tmp11        [V12,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;  V13 cse0         [V13,T06] (  4,  3   )     int  ->   r5         "CSE - aggressive"
+;  V06 tmp5         [V06,T01] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+;  V07 tmp6         [V07,T05] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp7         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    "field V05.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp8         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    "field V05.value (fldOffset=0x1)" P-INDEP
+;  V10 tmp9         [V10,T00] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M24931_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M24931_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r5, 0xd1ff
-            movt    r5, 0xd1ff
-            ldr     r1, [r5]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            ldr     r1, [r0]
             ; gcrRegs +[r1]
             cmp     r1, 0
             bne     SHORT G_M24931_IG04
@@ -51,12 +49,14 @@ G_M24931_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs +[r1]
             str     r1, [sp]
             ; GC ptr vars +{V06}
-            ldr     r3, [r5-0x30]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movt    r0, 0xd1ff
+            ldr     r3, [r0]
             ; gcrRegs +[r3]
             cmp     r3, 0
             beq     SHORT G_M24931_IG06
             adds    r0, r1, 4
-            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             mov     r1, r3
             movw    r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M24931_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r2, [sp]
             ; gcrRegs +[r2]
             str     r1, [r2+0x0C]
-            mov     r0, r5
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
             mov     r1, r2
             ; gcrRegs +[r1]
             movw    r12, 0xd1ff
@@ -78,17 +79,17 @@ G_M24931_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=72 bbWeight=0.50 PerfScore 12.50
+                       ;; size=84 bbWeight=0.50 PerfScore 14.00
 G_M24931_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r2]
             ; GC ptr vars -{V06}
-            movs    r0, 1
-            strb    r0, [sp+0x04]
-            movs    r0, 16
-            strb    r0, [sp+0x05]
+            movs    r3, 1
+            strb    r3, [sp+0x04]
+            movs    r3, 16
+            strb    r3, [sp+0x05]
+            ldrh    r3, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldrh    r3, [sp+0x04]
             movs    r2, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -97,8 +98,9 @@ G_M24931_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4},
             ; gcrRegs -[r1 r4]
                        ;; size=34 bbWeight=1 PerfScore 11.00
 G_M24931_IG05:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M24931_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r0]
             movw    r3, 0xd1ff
@@ -108,7 +110,7 @@ G_M24931_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 148, prolog size 8, PerfScore 32.50, instruction count 50, allocated bytes for code 148 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
+; Total bytes of code 164, prolog size 10, PerfScore 36.00, instruction count 55, allocated bytes for code 164 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -120,7 +122,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 74 (0x0004a) Actual length = 148 (0x000094)
+  Function Length   : 82 (0x00052) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -128,7 +130,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

+16 (+10.96%) : 24953.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)

@@ -8,33 +8,31 @@
 ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T03] (  2,  4   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp3         [V05,T05] (  4,  3.50)     ref  ->   r1        
-;  V06 tmp4         [V06,T02] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-;  V07 tmp5         [V07,T07] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7         [V09,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
-;  V10 tmp8         [V10,T01] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9         [V11,T08] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V12 tmp10        [V12,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;  V13 cse0         [V13,T06] (  4,  3   )     int  ->   r5         "CSE - aggressive"
+;  V05 tmp3         [V05,T04] (  4,  3.50)     ref  ->   r1        
+;  V06 tmp4         [V06,T01] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+;  V07 tmp5         [V07,T05] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
+;  V10 tmp8         [V10,T00] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M22152_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M22152_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r5, 0xd1ff
-            movt    r5, 0xd1ff
-            ldr     r1, [r5]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            ldr     r1, [r0]
             ; gcrRegs +[r1]
             cmp     r1, 0
             bne     SHORT G_M22152_IG04
@@ -51,12 +49,14 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs +[r1]
             str     r1, [sp]
             ; GC ptr vars +{V06}
-            ldr     r3, [r5-0x2C]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movt    r0, 0xd1ff
+            ldr     r3, [r0]
             ; gcrRegs +[r3]
             cmp     r3, 0
             beq     SHORT G_M22152_IG07
             adds    r0, r1, 4
-            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             mov     r1, r3
             movw    r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r2, [sp]
             ; gcrRegs +[r2]
             str     r1, [r2+0x0C]
-            mov     r0, r5
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
             mov     r1, r2
             ; gcrRegs +[r1]
             movw    r12, 0xd1ff
@@ -78,18 +79,18 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=72 bbWeight=0.50 PerfScore 12.50
+                       ;; size=84 bbWeight=0.50 PerfScore 14.00
 G_M22152_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r2]
             ; GC ptr vars -{V06}
-            movs    r0, 0
-            strb    r0, [sp+0x04]
+            movs    r3, 0
+            strb    r3, [sp+0x04]
                        ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG05:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0x05]
+            strb    r3, [sp+0x05]
+            ldrh    r3, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldrh    r3, [sp+0x04]
             movs    r2, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -98,8 +99,9 @@ G_M22152_IG05:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1 r4]
                        ;; size=26 bbWeight=1 PerfScore 8.00
 G_M22152_IG06:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r0]
             movw    r3, 0xd1ff
@@ -109,7 +111,7 @@ G_M22152_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 146, prolog size 8, PerfScore 31.50, instruction count 49, allocated bytes for code 146 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 162, prolog size 10, PerfScore 35.00, instruction count 54, allocated bytes for code 162 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -121,7 +123,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 73 (0x00049) Actual length = 146 (0x000092)
+  Function Length   : 81 (0x00051) Actual length = 162 (0x0000a2)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +131,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

benchmarks.run_pgo.linux.arm.checked.mch

-16 (-19.51%) : 17710.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)

@@ -5,52 +5,39 @@
 ; partially interruptible
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [sp+0x2C]  do-not-enreg[] class-hnd <System.String>
-;  V01 arg1         [V01    ] (  1,  1   )  ushort  ->  [sp+0x28]  do-not-enreg[]
-;  V02 arg2         [V02    ] (  1,  1   )     int  ->  [sp+0x24]  do-not-enreg[]
-;  V03 arg3         [V03    ] (  1,  1   )   byref  ->  [sp+0x20]  do-not-enreg[]
+;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [sp+0x1C]  do-not-enreg[] class-hnd <System.String>
+;  V01 arg1         [V01    ] (  1,  1   )  ushort  ->  [sp+0x18]  do-not-enreg[]
+;  V02 arg2         [V02    ] (  1,  1   )     int  ->  [sp+0x14]  do-not-enreg[]
+;  V03 arg3         [V03    ] (  1,  1   )   byref  ->  [sp+0x10]  do-not-enreg[]
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05    ] (  1,  1   )     int  ->  [sp+0x1C]  do-not-enreg[] "Cast away GC"
-;  V06 tmp2         [V06    ] (  1,  1   )     int  ->  [sp+0x18]  do-not-enreg[] "argument with side effect"
-;  V07 tmp3         [V07    ] (  1,  1   )     ref  ->  [sp+0x14]  do-not-enreg[] must-init "argument with side effect"
-;  V08 tmp4         [V08    ] (  1,  1   )     int  ->  [sp+0x10]  do-not-enreg[] "argument with side effect"
-;  V09 tmp5         [V09    ] (  1,  1   )     int  ->  [sp+0x0C]  do-not-enreg[] "argument with side effect"
+;  V05 tmp1         [V05    ] (  1,  1   )     int  ->  [sp+0x0C]  do-not-enreg[] "Cast away GC"
+;  V06 tmp2         [V06    ] (  1,  1   )     int  ->  [sp+0x08]  do-not-enreg[] "argument with side effect"
 ;
-; Lcl frame size = 48
+; Lcl frame size = 32
 
 G_M56677_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r10,r11,lr}
-            sub     sp, 48
-            add     r11, sp, 56
-            movs    r4, 0
-            str     r4, [sp+0x14]  // [V07 tmp3]
-            str     r0, [sp+0x2C]  // [V00 arg0]
-            str     r1, [sp+0x28]  // [V01 arg1]
-            str     r2, [sp+0x24]  // [V02 arg2]
-            str     r3, [sp+0x20]  // [V03 arg3]
-                       ;; size=22 bbWeight=1 PerfScore 9.00
+            sub     sp, 32
+            add     r11, sp, 40
+            str     r0, [sp+0x1C]  // [V00 arg0]
+            str     r1, [sp+0x18]  // [V01 arg1]
+            str     r2, [sp+0x14]  // [V02 arg2]
+            str     r3, [sp+0x10]  // [V03 arg3]
+                       ;; size=18 bbWeight=1 PerfScore 7.00
 G_M56677_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ldr     r1, [sp+0x2C]
+            ldr     r2, [sp+0x10]
+            ; byrRegs +[r2]
+            str     r2, [sp+0x0C]  // [V05 tmp1]
+            ldr     r2, [sp+0x0C]  // [V05 tmp1]
+            ; byrRegs -[r2]
+            str     r2, [sp+0x08]  // [V06 tmp2]
+            ldr     r2, [sp+0x08]  // [V06 tmp2]
+            str     r2, [sp]   // [V04 OutArgs]
+            ldr     r2, [sp+0x18]  // [V01 arg1]
+            uxth    r2, r2
+            ldr     r1, [sp+0x1C]  // [V00 arg0]
             ; gcrRegs +[r1]
-            str     r1, [sp+0x14]  // [V07 tmp3]
-            ldr     r1, [sp+0x28]  // [V01 arg1]
-            ; gcrRegs -[r1]
-            uxth    r1, r1
-            str     r1, [sp+0x10]  // [V08 tmp4]
-            ldr     r1, [sp+0x24]  // [V02 arg2]
-            str     r1, [sp+0x0C]  // [V09 tmp5]
-            ldr     r1, [sp+0x20]  // [V03 arg3]
-            ; byrRegs +[r1]
-            str     r1, [sp+0x1C]  // [V05 tmp1]
-            ldr     r1, [sp+0x1C]  // [V05 tmp1]
-            ; byrRegs -[r1]
-            str     r1, [sp+0x18]  // [V06 tmp2]
-            ldr     r1, [sp+0x18]  // [V06 tmp2]
-            str     r1, [sp]   // [V04 OutArgs]
-            ldr     r1, [sp+0x14]  // [V07 tmp3]
-            ; gcrRegs +[r1]
-            ldr     r2, [sp+0x10]  // [V08 tmp4]
-            ldr     r3, [sp+0x0C]  // [V09 tmp5]
+            ldr     r3, [sp+0x14]  // [V02 arg2]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    lr, 0xd1ff
@@ -58,13 +45,13 @@ G_M56677_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r1]
-                       ;; size=54 bbWeight=1 PerfScore 22.00
+                       ;; size=42 bbWeight=1 PerfScore 16.00
 G_M56677_IG03:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 48
+            add     sp, 32
             pop     {r4,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 82, prolog size 14, PerfScore 33.00, instruction count 33, allocated bytes for code 82 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
+; Total bytes of code 66, prolog size 10, PerfScore 25.00, instruction count 25, allocated bytes for code 66 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -76,11 +63,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 41 (0x00029) Actual length = 82 (0x000052)
+  Function Length   : 33 (0x00021) Actual length = 66 (0x000042)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    0C          add sp, sp, #48                     ; opsize 16
+    08          add sp, sp, #32                     ; opsize 16
     AC 10       pop {r4,r10,r11,lr}                 ; opsize 32
     FF          end
 

-16 (-19.51%) : 24751.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)

@@ -5,52 +5,39 @@
 ; partially interruptible
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [sp+0x2C]  do-not-enreg[] class-hnd <System.String>
-;  V01 arg1         [V01    ] (  1,  1   )  ushort  ->  [sp+0x28]  do-not-enreg[]
-;  V02 arg2         [V02    ] (  1,  1   )     int  ->  [sp+0x24]  do-not-enreg[]
-;  V03 arg3         [V03    ] (  1,  1   )   byref  ->  [sp+0x20]  do-not-enreg[]
+;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [sp+0x1C]  do-not-enreg[] class-hnd <System.String>
+;  V01 arg1         [V01    ] (  1,  1   )  ushort  ->  [sp+0x18]  do-not-enreg[]
+;  V02 arg2         [V02    ] (  1,  1   )     int  ->  [sp+0x14]  do-not-enreg[]
+;  V03 arg3         [V03    ] (  1,  1   )   byref  ->  [sp+0x10]  do-not-enreg[]
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05    ] (  1,  1   )     int  ->  [sp+0x1C]  do-not-enreg[] "Cast away GC"
-;  V06 tmp2         [V06    ] (  1,  1   )     int  ->  [sp+0x18]  do-not-enreg[] "argument with side effect"
-;  V07 tmp3         [V07    ] (  1,  1   )     ref  ->  [sp+0x14]  do-not-enreg[] must-init "argument with side effect"
-;  V08 tmp4         [V08    ] (  1,  1   )     int  ->  [sp+0x10]  do-not-enreg[] "argument with side effect"
-;  V09 tmp5         [V09    ] (  1,  1   )     int  ->  [sp+0x0C]  do-not-enreg[] "argument with side effect"
+;  V05 tmp1         [V05    ] (  1,  1   )     int  ->  [sp+0x0C]  do-not-enreg[] "Cast away GC"
+;  V06 tmp2         [V06    ] (  1,  1   )     int  ->  [sp+0x08]  do-not-enreg[] "argument with side effect"
 ;
-; Lcl frame size = 48
+; Lcl frame size = 32
 
 G_M56677_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r10,r11,lr}
-            sub     sp, 48
-            add     r11, sp, 56
-            movs    r4, 0
-            str     r4, [sp+0x14]  // [V07 tmp3]
-            str     r0, [sp+0x2C]  // [V00 arg0]
-            str     r1, [sp+0x28]  // [V01 arg1]
-            str     r2, [sp+0x24]  // [V02 arg2]
-            str     r3, [sp+0x20]  // [V03 arg3]
-                       ;; size=22 bbWeight=1 PerfScore 9.00
+            sub     sp, 32
+            add     r11, sp, 40
+            str     r0, [sp+0x1C]  // [V00 arg0]
+            str     r1, [sp+0x18]  // [V01 arg1]
+            str     r2, [sp+0x14]  // [V02 arg2]
+            str     r3, [sp+0x10]  // [V03 arg3]
+                       ;; size=18 bbWeight=1 PerfScore 7.00
 G_M56677_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ldr     r1, [sp+0x2C]
+            ldr     r2, [sp+0x10]
+            ; byrRegs +[r2]
+            str     r2, [sp+0x0C]  // [V05 tmp1]
+            ldr     r2, [sp+0x0C]  // [V05 tmp1]
+            ; byrRegs -[r2]
+            str     r2, [sp+0x08]  // [V06 tmp2]
+            ldr     r2, [sp+0x08]  // [V06 tmp2]
+            str     r2, [sp]   // [V04 OutArgs]
+            ldr     r2, [sp+0x18]  // [V01 arg1]
+            uxth    r2, r2
+            ldr     r1, [sp+0x1C]  // [V00 arg0]
             ; gcrRegs +[r1]
-            str     r1, [sp+0x14]  // [V07 tmp3]
-            ldr     r1, [sp+0x28]  // [V01 arg1]
-            ; gcrRegs -[r1]
-            uxth    r1, r1
-            str     r1, [sp+0x10]  // [V08 tmp4]
-            ldr     r1, [sp+0x24]  // [V02 arg2]
-            str     r1, [sp+0x0C]  // [V09 tmp5]
-            ldr     r1, [sp+0x20]  // [V03 arg3]
-            ; byrRegs +[r1]
-            str     r1, [sp+0x1C]  // [V05 tmp1]
-            ldr     r1, [sp+0x1C]  // [V05 tmp1]
-            ; byrRegs -[r1]
-            str     r1, [sp+0x18]  // [V06 tmp2]
-            ldr     r1, [sp+0x18]  // [V06 tmp2]
-            str     r1, [sp]   // [V04 OutArgs]
-            ldr     r1, [sp+0x14]  // [V07 tmp3]
-            ; gcrRegs +[r1]
-            ldr     r2, [sp+0x10]  // [V08 tmp4]
-            ldr     r3, [sp+0x0C]  // [V09 tmp5]
+            ldr     r3, [sp+0x14]  // [V02 arg2]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    lr, 0xd1ff
@@ -58,13 +45,13 @@ G_M56677_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r1]
-                       ;; size=54 bbWeight=1 PerfScore 22.00
+                       ;; size=42 bbWeight=1 PerfScore 16.00
 G_M56677_IG03:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 48
+            add     sp, 32
             pop     {r4,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 82, prolog size 14, PerfScore 33.00, instruction count 33, allocated bytes for code 82 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
+; Total bytes of code 66, prolog size 10, PerfScore 25.00, instruction count 25, allocated bytes for code 66 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -76,11 +63,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 41 (0x00029) Actual length = 82 (0x000052)
+  Function Length   : 33 (0x00021) Actual length = 66 (0x000042)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    0C          add sp, sp, #48                     ; opsize 16
+    08          add sp, sp, #32                     ; opsize 16
     AC 10       pop {r4,r10,r11,lr}                 ; opsize 32
     FF          end
 

-28 (-15.73%) : 74034.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)

@@ -12,37 +12,29 @@
 ;  V00 this         [V00,T00] (  4,  3   )   byref  ->   r4         this single-def
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Formats.Asn1.AsnReaderOptions>
 ;  V02 OutArgs      [V02    ] (  1,  1   )  struct ( 8) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03    ] (  2,  0   )  struct (12) [sp+0x1C]  do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <System.ReadOnlyMemory`1[ubyte]>
-;  V04 tmp2         [V04,T06] (  2,  0   )     int  ->   r4         "impAppendStmt"
+;  V03 tmp1         [V03    ] (  4,  0   )  struct (12) [sp+0x0C]  do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "impAppendStmt" <System.ReadOnlyMemory`1[ubyte]>
+;  V04 tmp2         [V04,T05] (  2,  0   )     int  ->   r4         "impAppendStmt"
 ;  V05 tmp3         [V05,T01] (  3,  0   )     ref  ->   r5         class-hnd exact single-def "NewObj constructor temp" <System.Formats.Asn1.AsnReader>
 ;* V06 tmp4         [V06    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V07 tmp5         [V07,T11] (  0,  0   )  ushort  ->  zero-ref    "field V01._twoDigitYearMax (fldOffset=0x0)" P-INDEP
-;* V08 tmp6         [V08,T12] (  0,  0   )   ubyte  ->  zero-ref    "field V01.<SkipSetSortOrderVerification>k__BackingField (fldOffset=0x2)" P-INDEP
-;  V09 tmp7         [V09,T04] (  2,  0   )     ref  ->  [sp+0x1C]  do-not-enreg[H] hidden-struct-arg "field V03._object (fldOffset=0x0)" P-DEP
-;  V10 tmp8         [V10,T07] (  2,  0   )     int  ->  [sp+0x20]  do-not-enreg[H] hidden-struct-arg "field V03._index (fldOffset=0x4)" P-DEP
-;  V11 tmp9         [V11,T08] (  2,  0   )     int  ->  [sp+0x24]  do-not-enreg[H] hidden-struct-arg "field V03._length (fldOffset=0x8)" P-DEP
-;  V12 tmp10        [V12,T05] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
-;  V13 tmp11        [V13,T03] (  3,  0   )  struct ( 4) [sp+0x18]  do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.AsnReaderOptions>
-;* V14 tmp12        [V14,T10] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V15 tmp13        [V15,T02] (  4,  0   )  struct (12) [sp+0x0C]  do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
-;  V16 tmp14        [V16,T09] (  2,  0   )     int  ->   r4         "argument with side effect"
+;* V07 tmp5         [V07,T08] (  0,  0   )  ushort  ->  zero-ref    "field V01._twoDigitYearMax (fldOffset=0x0)" P-INDEP
+;* V08 tmp6         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    "field V01.<SkipSetSortOrderVerification>k__BackingField (fldOffset=0x2)" P-INDEP
+;  V09 tmp7         [V09,T03] (  2,  0   )     ref  ->  [sp+0x0C]  do-not-enreg[H] hidden-struct-arg "field V03._object (fldOffset=0x0)" P-DEP
+;  V10 tmp8         [V10,T06] (  2,  0   )     int  ->  [sp+0x10]  do-not-enreg[H] hidden-struct-arg "field V03._index (fldOffset=0x4)" P-DEP
+;  V11 tmp9         [V11,T07] (  2,  0   )     int  ->  [sp+0x14]  do-not-enreg[H] hidden-struct-arg "field V03._length (fldOffset=0x8)" P-DEP
+;  V12 tmp10        [V12,T04] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
+;  V13 tmp11        [V13,T02] (  3,  0   )  struct ( 4) [sp+0x08]  do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.AsnReaderOptions>
 ;
-; Lcl frame size = 40
+; Lcl frame size = 24
 
 G_M34208_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r11,lr}
-            sub     sp, 40
-            add     r11, sp, 48
-            sub     r3, r11, 36
+            sub     sp, 24
+            add     r11, sp, 32
             movs    r1, 0
-            movs    r2, 0
-            stm     r3!, {r1,r2}
-            stm     r3!, {r1,r2}
-            stm     r3!, {r1,r2}
-            str     r1, [r3]
+            str     r1, [sp+0x0C]
             mov     r4, r0
             ; byrRegs +[r4]
-                       ;; size=28 bbWeight=1 PerfScore 11.00
+                       ;; size=16 bbWeight=1 PerfScore 6.00
 G_M34208_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
             ldr     r0, [r4+0x04]
             cmp     r0, 0
@@ -50,7 +42,7 @@ G_M34208_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
                        ;; size=6 bbWeight=1 PerfScore 3.00
 G_M34208_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; byrRegs -[r4]
-            add     sp, 40
+            add     sp, 24
             pop     {r4,r5,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 G_M34208_IG04:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, gcvars, byref
@@ -65,7 +57,7 @@ G_M34208_IG04:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             movt    r1, 0xd1ff
             ldr     r1, [r1]
             ; gcrRegs +[r1]
-            add     r0, sp, 28
+            add     r0, sp, 12
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
@@ -81,31 +73,21 @@ G_M34208_IG04:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             ; gcrRegs +[r0]
             mov     r5, r0
             ; gcrRegs +[r5]
-                       ;; size=68 bbWeight=0 PerfScore 0.00
-G_M34208_IG05:        ; bbWeight=0, nogc, extend
-            ldr     r0, [sp+0x1C]
+            str     r4, [sp]
+            movs    r1, 0
+            strh    r1, [sp+0x08]
+                       ;; size=76 bbWeight=0 PerfScore 0.00
+G_M34208_IG05:        ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
-            str     r0, [sp+0x0C]
-            ldr     r0, [sp+0x20]
-            str     r0, [sp+0x10]
-            ldr     r0, [sp+0x24]
-            str     r0, [sp+0x14]
-                       ;; size=12 bbWeight=0 PerfScore 0.00
-G_M34208_IG06:        ; bbWeight=0, extend
-            movs    r0, 0
-            strh    r0, [sp+0x18]
-                       ;; size=6 bbWeight=0 PerfScore 0.00
-G_M34208_IG07:        ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
-            strb    r0, [sp+0x1A]
-            mov     r0, r5
-            ; gcrRegs +[r0]
+            strb    r1, [sp+0x0A]
+            ldr     r1, [sp+0x08]
+            str     r1, [sp+0x04]
             ldr     r1, [sp+0x0C]
             ; gcrRegs +[r1]
             ldr     r2, [sp+0x10]
             ldr     r3, [sp+0x14]
-            str     r4, [sp]
-            ldr     lr, [sp+0x18]
-            str     lr, [sp+0x04]
+            mov     r0, r5
+            ; gcrRegs +[r0]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
@@ -119,9 +101,9 @@ G_M34208_IG07:        ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
             blx     r3     // System.Formats.Asn1.AsnReader:ThrowIfNotEmpty():this
             ; gcrRegs -[r0 r5]
             b       SHORT G_M34208_IG03
-                       ;; size=52 bbWeight=0 PerfScore 0.00
+                       ;; size=46 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 178, prolog size 26, PerfScore 16.00, instruction count 63, allocated bytes for code 178 (MethodHash=fab97a5f) for method System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
+; Total bytes of code 150, prolog size 14, PerfScore 11.00, instruction count 52, allocated bytes for code 150 (MethodHash=fab97a5f) for method System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -133,7 +115,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 89 (0x00059) Actual length = 178 (0x0000b2)
+  Function Length   : 75 (0x0004b) Actual length = 150 (0x000096)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -141,7 +123,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    0A          add sp, sp, #40                     ; opsize 16
+    06          add sp, sp, #24                     ; opsize 16
     A8 30       pop {r4,r5,r11,lr}                  ; opsize 32
     FF          end
 

+30 (+5.21%) : 154732.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)

@@ -14,29 +14,29 @@
 ;  V02 arg2         [V02,T02] (  6,  4   )     int  ->   r6         single-def
 ;  V03 arg3         [V03,T03] (  6,  4   )     int  ->   r7         single-def
 ;  V04 loc0         [V04    ] (  5,  3.00)     ref  ->  [r11-0x24]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
-;  V05 loc1         [V05,T06] (  6,  3.33)     int  ->   r8        
+;  V05 loc1         [V05,T06] (  6,  3.33)     int  ->  [r11-0x28]  spill-single-def
 ;* V06 loc2         [V06    ] (  0,  0   )     int  ->  zero-ref   
-;  V07 loc3         [V07    ] (  3,  2.50)   byref  ->  [r11-0x28]  must-init pinned
+;  V07 loc3         [V07    ] (  3,  2.50)   byref  ->  [r11-0x2C]  must-init pinned
 ;* V08 loc4         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;* V09 loc5         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
 ;* V10 loc6         [V10    ] (  0,  0   )     int  ->  zero-ref   
-;  V11 loc7         [V11    ] (  3,  0   )   byref  ->  [r11-0x2C]  must-init pinned
+;  V11 loc7         [V11    ] (  3,  0   )   byref  ->  [r11-0x30]  must-init pinned
 ;  V12 loc8         [V12,T14] (  2,  1.67)     int  ->   r3        
 ;  V13 OutArgs      [V13    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T05] (  7,  4.17)     int  ->  [r11-0x30]  spill-single-def
-;  V15 tmp2         [V15,T08] (  3,  3.33)     ref  ->  [r11-0x48]  class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
-;  V16 tmp3         [V16,T07] (  6,  3.33)     int  ->  [r11-0x34]  spill-single-def "guarded devirt return temp"
+;  V14 tmp1         [V14,T05] (  7,  4.17)     int  ->  [r11-0x34]  spill-single-def
+;  V15 tmp2         [V15,T08] (  3,  3.33)     ref  ->  [r11-0x50]  class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+;  V16 tmp3         [V16,T07] (  6,  3.33)     int  ->  [r11-0x38]  spill-single-def "guarded devirt return temp"
 ;* V17 tmp4         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
 ;* V18 tmp5         [V18,T16] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V19 tmp6         [V19,T17] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp7         [V20    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;  V21 tmp8         [V21,T13] (  5,  1.67)     int  ->  [r11-0x38]  "Inline stloc first use temp"
+;  V21 tmp8         [V21,T13] (  5,  1.67)     int  ->  [r11-0x3C]  "Inline stloc first use temp"
 ;* V22 tmp9         [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V23 tmp10        [V23    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V24 tmp11        [V24    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V25 tmp12        [V25    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V26 tmp13        [V26    ] (  3,  2.50)    long  ->  [r11-0x40]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V27 tmp14        [V27    ] (  1,  0.83)     int  ->  [r11-0x44]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V26 tmp13        [V26    ] (  3,  2.50)    long  ->  [r11-0x48]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V27 tmp14        [V27    ] (  1,  0.83)     int  ->  [r11-0x4C]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
 ;* V28 tmp15        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V29 tmp16        [V29,T11] (  4,  2.50)     int  ->   r3         "Inline stloc first use temp"
 ;* V30 tmp17        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
@@ -44,36 +44,36 @@
 ;  V32 tmp19        [V32,T10] (  2,  3.33)     int  ->   r0         "argument with side effect"
 ;  V33 tmp20        [V33,T18] (  3,  0   )     ref  ->   r0         single-def "arr expr"
 ;  V34 tmp21        [V34,T19] (  2,  0   )     int  ->   r3         "Cast away GC"
-;* V35 tmp22        [V35,T23] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V36 tmp23        [V36,T20] (  2,  0   )     int  ->   r1         "argument with side effect"
-;  V37 tmp24        [V37,T21] (  2,  0   )     int  ->   r2         "argument with side effect"
-;  V38 tmp25        [V38,T22] (  2,  0   )     int  ->   r3         "argument with side effect"
-;  V39 GsCookie     [V39    ] (  1,  1   )     int  ->  [r11-0x4C]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V40 rat0         [V40,T12] (  3,  2.50)     int  ->   lr         "field V30.lo (fldOffset=0x0)" P-INDEP
-;  V41 rat1         [V41,T15] (  2,  1.67)     int  ->   r0         "field V30.hi (fldOffset=0x4)" P-INDEP
-;  V42 rat2         [V42,T04] (  3,  5.00)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V35 tmp22        [V35,T20] (  2,  0   )     int  ->   r3         "argument with side effect"
+;  V36 GsCookie     [V36    ] (  1,  1   )     int  ->  [r11-0x54]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
+;  V37 rat0         [V37,T12] (  3,  2.50)     int  ->   lr         "field V30.lo (fldOffset=0x0)" P-INDEP
+;  V38 rat1         [V38,T15] (  2,  1.67)     int  ->   r0         "field V30.hi (fldOffset=0x4)" P-INDEP
+;  V39 rat2         [V39,T04] (  3,  5.00)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  TEMP_02                                     ref  ->  [r11-0x58]
+;  TEMP_01                                     int  ->  [r11-0x5C]
 ;
-; Lcl frame size = 68
+; Lcl frame size = 84
 
 G_M22299_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 68
+            sub     sp, 84
             mov     r9, sp
-            add     r11, sp, 96
+            add     r11, sp, 112
             movs    r4, 0
-            str     r4, [r9+0x3C]  // [V04 loc0]
-            str     r4, [r9+0x38]  // [V07 loc3]
-            str     r4, [r9+0x34]  // [V11 loc7]
+            str     r4, [r9+0x4C]  // [V04 loc0]
+            str     r4, [r9+0x44]  // [V07 loc3]
+            str     r4, [r9+0x40]  // [V11 loc7]
+            str     r4, [r9+0x18]  // [TEMP_02]
             movw    r4, 0xd1ff
             movt    r4, 0xd1ff
-            str     r4, [r9+0x14]  // [V39 GsCookie]
+            str     r4, [r9+0x1C]  // [V36 GsCookie]
             mov     r5, r0
             ; gcrRegs +[r5]
             mov     r4, r1
             ; gcrRegs +[r4]
             mov     r6, r2
             mov     r7, r3
-                       ;; size=46 bbWeight=1 PerfScore 15.00
+                       ;; size=50 bbWeight=1 PerfScore 16.00
 G_M22299_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             cmp     r4, 0
             beq     G_M22299_IG11
@@ -85,35 +85,35 @@ G_M22299_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
                        ;; size=20 bbWeight=1 PerfScore 7.00
 G_M22299_IG03:        ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             ldr     r8, [r4+0x04]
+            str     r8, [r9+0x48]
             add     r2, r4, 8
             ; byrRegs +[r2]
-            str     r2, [r9+0x38]  // [V07 loc3]
-            ldr     lr, [r9+0x38]  // [V07 loc3]
+            str     r2, [r9+0x44]  // [V07 loc3]
+            ldr     lr, [r9+0x44]  // [V07 loc3]
             ; byrRegs +[lr]
-            mov     r1, lr
-            str     r1, [r9+0x30]  // [V14 tmp1]
+            str     lr, [r9+0x3C]  // [V14 tmp1]
             movw    r2, 0xd1ff
             ; byrRegs -[r2]
             movt    r2, 0xd1ff
-            ldr     lr, [r2]
-            ; gcrRegs +[lr]
-            ; byrRegs -[lr]
-            str     lr, [r9+0x18]  // [V15 tmp2]
+            ldr     r12, [r2]
+            ; gcrRegs +[r12]
+            str     r12, [r9+0x20] // [V15 tmp2]
             ; GC ptr vars +{V15}
-            ldrsb   r2, [lr]
-            cmp     r1, 0
+            ldrsb   r2, [r12]
+            cmp     lr, 0
             beq     G_M22299_IG12
-            addw    r2, r9, 32 // [V26 tmp13]
-            addw    r3, r9, 28 // [V27 tmp14]
-            mov     r0, r1
+            addw    r2, r9, 40 // [V26 tmp13]
+            addw    r3, r9, 36 // [V27 tmp14]
+            mov     r0, lr
             mov     r1, r8
-            movw    r12, 0xd1ff
-            movt    r12, 0xd1ff
-            ldr     r12, [r12]
-            blx     r12        // <unknown method>
-            ; gcrRegs -[lr]
-            ldr     r1, [r9+0x30]  // [V14 tmp1]
-            subs    r0, r0, r1
+            movw    r8, 0xd1ff
+            movt    r8, 0xd1ff
+            ldr     r8, [r8]
+            blx     r8     // <unknown method>
+            ; gcrRegs -[r12]
+            ; byrRegs -[lr]
+            ldr     r8, [r9+0x3C]  // [V14 tmp1]
+            sub     r0, r0, r8
             movs    r1, 2
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -121,8 +121,8 @@ G_M22299_IG03:        ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             mov     r3, r0
             mov     r0, r3
             asrs    r1, r0, 31
-            ldr     r2, [r9+0x20]  // [V26 tmp13]
-            ldr     lr, [r9+0x24]  // [V26 tmp13+0x04]
+            ldr     r2, [r9+0x28]  // [V26 tmp13]
+            ldr     lr, [r9+0x2C]  // [V26 tmp13+0x04]
             adds    r12, r0, r2
             adc     r0, r1, lr
             mov     lr, r12
@@ -130,16 +130,17 @@ G_M22299_IG03:        ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             cmp     lr, 0x80000000
             sbcs    r0, r1
             bhs     G_M22299_IG14
-            cmp     r3, r8
+            ldr     r12, [r9+0x48] // [V05 loc1]
+            cmp     r3, r12
             bne     SHORT G_M22299_IG13
-                       ;; size=132 bbWeight=0.83 PerfScore 34.17
+                       ;; size=142 bbWeight=0.83 PerfScore 35.00
 G_M22299_IG04:        ; bbWeight=0.83, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
             ; GC ptr vars -{V15}
-            mov     r12, lr
-            str     r12, [r9+0x2C] // [V16 tmp3]
-            cmp     r12, 0x400
-            bgt     SHORT G_M22299_IG15
-            mov     r3, r12
+            mov     r2, lr
+            str     r2, [r9+0x38]  // [V16 tmp3]
+            cmp     r2, 0x400
+            bgt     G_M22299_IG15
+            mov     r3, r2
             tst     r3, r3
             beq     SHORT G_M22299_IG07
             add     sp, 16
@@ -148,7 +149,7 @@ G_M22299_IG04:        ; bbWeight=0.83, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5
             subs    r3, sp, r3
             bvc     SHORT G_M22299_IG05
             movs    r3, 0
-                       ;; size=34 bbWeight=0.83 PerfScore 10.83
+                       ;; size=36 bbWeight=0.83 PerfScore 10.83
 G_M22299_IG05:        ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [sp]
             sub     r0, sp, 0x1000
@@ -164,26 +165,26 @@ G_M22299_IG06:        ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             add     r3, sp, 16
                        ;; size=10 bbWeight=0.83 PerfScore 3.33
 G_M22299_IG07:        ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            str     r12, [sp]  // [V13 OutArgs]
+            str     r2, [sp]   // [V13 OutArgs]
             str     r6, [sp+0x04]  // [V13 OutArgs+0x04]
             str     r7, [sp+0x08]  // [V13 OutArgs+0x08]
             mov     r0, r5
             ; gcrRegs +[r0]
-            ldr     r1, [r9+0x30]  // [V14 tmp1]
-            mov     r2, r8
+            mov     r1, r8
+            mov     r2, r12
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
-            str     r0, [r9+0x3C]  // [V04 loc0]
-                       ;; size=34 bbWeight=0.83 PerfScore 9.17
+            str     r0, [r9+0x4C]  // [V04 loc0]
+                       ;; size=30 bbWeight=0.83 PerfScore 9.17
 G_M22299_IG08:        ; bbWeight=0.83, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movs    r1, 0
-            str     r1, [r9+0x38]  // [V07 loc3]
+            str     r1, [r9+0x44]  // [V07 loc3]
                        ;; size=6 bbWeight=0.83 PerfScore 1.67
 G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            addw    r1, r9, 60 // [V04 loc0]
+            addw    r1, r9, 76 // [V04 loc0]
             mov     r0, r5
             ; gcrRegs +[r0]
             mov     r2, r4
@@ -194,11 +195,11 @@ G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0 r2 r4-r5]
-            ldr     r0, [r9+0x3C]  // [V04 loc0]
+            ldr     r0, [r9+0x4C]  // [V04 loc0]
             ; gcrRegs +[r0]
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
-            ldr     lr, [r9+0x14]  // [V39 GsCookie]
+            ldr     lr, [r9+0x1C]  // [V36 GsCookie]
             cmp     r12, lr
             beq     SHORT G_M22299_IG10
             movw    r12, 0xd1ff
@@ -209,7 +210,7 @@ G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
 G_M22299_IG10:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs +[r0]
             mov     sp, r9
-            add     sp, 68
+            add     sp, 84
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=8 bbWeight=1 PerfScore 3.00
 G_M22299_IG11:        ; bbWeight=0.17, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
...

+30 (+5.21%) : 155896.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)

@@ -14,29 +14,29 @@
 ;  V02 arg2         [V02,T02] (  6,  4   )     int  ->   r6         single-def
 ;  V03 arg3         [V03,T03] (  6,  4   )     int  ->   r7         single-def
 ;  V04 loc0         [V04    ] (  5,  3   )     ref  ->  [r11-0x24]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
-;  V05 loc1         [V05,T06] (  6,  3.20)     int  ->   r8        
+;  V05 loc1         [V05,T06] (  6,  3.20)     int  ->  [r11-0x28]  spill-single-def
 ;* V06 loc2         [V06    ] (  0,  0   )     int  ->  zero-ref   
-;  V07 loc3         [V07    ] (  3,  2.40)   byref  ->  [r11-0x28]  must-init pinned
+;  V07 loc3         [V07    ] (  3,  2.40)   byref  ->  [r11-0x2C]  must-init pinned
 ;* V08 loc4         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;* V09 loc5         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
 ;* V10 loc6         [V10    ] (  0,  0   )     int  ->  zero-ref   
-;  V11 loc7         [V11    ] (  3,  0   )   byref  ->  [r11-0x2C]  must-init pinned
+;  V11 loc7         [V11    ] (  3,  0   )   byref  ->  [r11-0x30]  must-init pinned
 ;  V12 loc8         [V12,T14] (  2,  1.60)     int  ->   r3        
 ;  V13 OutArgs      [V13    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T05] (  7,  4   )     int  ->  [r11-0x30]  spill-single-def
-;  V15 tmp2         [V15,T08] (  3,  3.20)     ref  ->  [r11-0x48]  class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
-;  V16 tmp3         [V16,T07] (  6,  3.20)     int  ->  [r11-0x34]  spill-single-def "guarded devirt return temp"
+;  V14 tmp1         [V14,T05] (  7,  4   )     int  ->  [r11-0x34]  spill-single-def
+;  V15 tmp2         [V15,T08] (  3,  3.20)     ref  ->  [r11-0x50]  class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+;  V16 tmp3         [V16,T07] (  6,  3.20)     int  ->  [r11-0x38]  spill-single-def "guarded devirt return temp"
 ;* V17 tmp4         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
 ;* V18 tmp5         [V18,T16] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V19 tmp6         [V19,T17] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp7         [V20    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;  V21 tmp8         [V21,T13] (  5,  1.60)     int  ->  [r11-0x38]  "Inline stloc first use temp"
+;  V21 tmp8         [V21,T13] (  5,  1.60)     int  ->  [r11-0x3C]  "Inline stloc first use temp"
 ;* V22 tmp9         [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V23 tmp10        [V23    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V24 tmp11        [V24    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V25 tmp12        [V25    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V26 tmp13        [V26    ] (  3,  2.40)    long  ->  [r11-0x40]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V27 tmp14        [V27    ] (  1,  0.80)     int  ->  [r11-0x44]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V26 tmp13        [V26    ] (  3,  2.40)    long  ->  [r11-0x48]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V27 tmp14        [V27    ] (  1,  0.80)     int  ->  [r11-0x4C]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
 ;* V28 tmp15        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V29 tmp16        [V29,T11] (  4,  2.40)     int  ->   r3         "Inline stloc first use temp"
 ;* V30 tmp17        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
@@ -44,36 +44,36 @@
 ;  V32 tmp19        [V32,T10] (  2,  3.20)     int  ->   r0         "argument with side effect"
 ;  V33 tmp20        [V33,T18] (  3,  0   )     ref  ->   r0         single-def "arr expr"
 ;  V34 tmp21        [V34,T19] (  2,  0   )     int  ->   r3         "Cast away GC"
-;* V35 tmp22        [V35,T23] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V36 tmp23        [V36,T20] (  2,  0   )     int  ->   r1         "argument with side effect"
-;  V37 tmp24        [V37,T21] (  2,  0   )     int  ->   r2         "argument with side effect"
-;  V38 tmp25        [V38,T22] (  2,  0   )     int  ->   r3         "argument with side effect"
-;  V39 GsCookie     [V39    ] (  1,  1   )     int  ->  [r11-0x4C]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V40 rat0         [V40,T12] (  3,  2.40)     int  ->   lr         "field V30.lo (fldOffset=0x0)" P-INDEP
-;  V41 rat1         [V41,T15] (  2,  1.60)     int  ->   r0         "field V30.hi (fldOffset=0x4)" P-INDEP
-;  V42 rat2         [V42,T04] (  3,  4.80)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V35 tmp22        [V35,T20] (  2,  0   )     int  ->   r3         "argument with side effect"
+;  V36 GsCookie     [V36    ] (  1,  1   )     int  ->  [r11-0x54]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
+;  V37 rat0         [V37,T12] (  3,  2.40)     int  ->   lr         "field V30.lo (fldOffset=0x0)" P-INDEP
+;  V38 rat1         [V38,T15] (  2,  1.60)     int  ->   r0         "field V30.hi (fldOffset=0x4)" P-INDEP
+;  V39 rat2         [V39,T04] (  3,  4.80)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  TEMP_02                                     ref  ->  [r11-0x58]
+;  TEMP_01                                     int  ->  [r11-0x5C]
 ;
-; Lcl frame size = 68
+; Lcl frame size = 84
 
 G_M22299_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 68
+            sub     sp, 84
             mov     r9, sp
-            add     r11, sp, 96
+            add     r11, sp, 112
             movs    r4, 0
-            str     r4, [r9+0x3C]  // [V04 loc0]
-            str     r4, [r9+0x38]  // [V07 loc3]
-            str     r4, [r9+0x34]  // [V11 loc7]
+            str     r4, [r9+0x4C]  // [V04 loc0]
+            str     r4, [r9+0x44]  // [V07 loc3]
+            str     r4, [r9+0x40]  // [V11 loc7]
+            str     r4, [r9+0x18]  // [TEMP_02]
             movw    r4, 0xd1ff
             movt    r4, 0xd1ff
-            str     r4, [r9+0x14]  // [V39 GsCookie]
+            str     r4, [r9+0x1C]  // [V36 GsCookie]
             mov     r5, r0
             ; gcrRegs +[r5]
             mov     r4, r1
             ; gcrRegs +[r4]
             mov     r6, r2
             mov     r7, r3
-                       ;; size=46 bbWeight=1 PerfScore 15.00
+                       ;; size=50 bbWeight=1 PerfScore 16.00
 G_M22299_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             cmp     r4, 0
             beq     G_M22299_IG11
@@ -85,35 +85,35 @@ G_M22299_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
                        ;; size=20 bbWeight=1 PerfScore 7.00
 G_M22299_IG03:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             ldr     r8, [r4+0x04]
+            str     r8, [r9+0x48]
             add     r2, r4, 8
             ; byrRegs +[r2]
-            str     r2, [r9+0x38]  // [V07 loc3]
-            ldr     lr, [r9+0x38]  // [V07 loc3]
+            str     r2, [r9+0x44]  // [V07 loc3]
+            ldr     lr, [r9+0x44]  // [V07 loc3]
             ; byrRegs +[lr]
-            mov     r1, lr
-            str     r1, [r9+0x30]  // [V14 tmp1]
+            str     lr, [r9+0x3C]  // [V14 tmp1]
             movw    r2, 0xd1ff
             ; byrRegs -[r2]
             movt    r2, 0xd1ff
-            ldr     lr, [r2]
-            ; gcrRegs +[lr]
-            ; byrRegs -[lr]
-            str     lr, [r9+0x18]  // [V15 tmp2]
+            ldr     r12, [r2]
+            ; gcrRegs +[r12]
+            str     r12, [r9+0x20] // [V15 tmp2]
             ; GC ptr vars +{V15}
-            ldrsb   r2, [lr]
-            cmp     r1, 0
+            ldrsb   r2, [r12]
+            cmp     lr, 0
             beq     G_M22299_IG12
-            addw    r2, r9, 32 // [V26 tmp13]
-            addw    r3, r9, 28 // [V27 tmp14]
-            mov     r0, r1
+            addw    r2, r9, 40 // [V26 tmp13]
+            addw    r3, r9, 36 // [V27 tmp14]
+            mov     r0, lr
             mov     r1, r8
-            movw    r12, 0xd1ff
-            movt    r12, 0xd1ff
-            ldr     r12, [r12]
-            blx     r12        // <unknown method>
-            ; gcrRegs -[lr]
-            ldr     r1, [r9+0x30]  // [V14 tmp1]
-            subs    r0, r0, r1
+            movw    r8, 0xd1ff
+            movt    r8, 0xd1ff
+            ldr     r8, [r8]
+            blx     r8     // <unknown method>
+            ; gcrRegs -[r12]
+            ; byrRegs -[lr]
+            ldr     r8, [r9+0x3C]  // [V14 tmp1]
+            sub     r0, r0, r8
             movs    r1, 2
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -121,8 +121,8 @@ G_M22299_IG03:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             mov     r3, r0
             mov     r0, r3
             asrs    r1, r0, 31
-            ldr     r2, [r9+0x20]  // [V26 tmp13]
-            ldr     lr, [r9+0x24]  // [V26 tmp13+0x04]
+            ldr     r2, [r9+0x28]  // [V26 tmp13]
+            ldr     lr, [r9+0x2C]  // [V26 tmp13+0x04]
             adds    r12, r0, r2
             adc     r0, r1, lr
             mov     lr, r12
@@ -130,16 +130,17 @@ G_M22299_IG03:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             cmp     lr, 0x80000000
             sbcs    r0, r1
             bhs     G_M22299_IG14
-            cmp     r3, r8
+            ldr     r12, [r9+0x48] // [V05 loc1]
+            cmp     r3, r12
             bne     SHORT G_M22299_IG13
-                       ;; size=132 bbWeight=0.80 PerfScore 32.80
+                       ;; size=142 bbWeight=0.80 PerfScore 33.60
 G_M22299_IG04:        ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
             ; GC ptr vars -{V15}
-            mov     r12, lr
-            str     r12, [r9+0x2C] // [V16 tmp3]
-            cmp     r12, 0x400
-            bgt     SHORT G_M22299_IG15
-            mov     r3, r12
+            mov     r2, lr
+            str     r2, [r9+0x38]  // [V16 tmp3]
+            cmp     r2, 0x400
+            bgt     G_M22299_IG15
+            mov     r3, r2
             tst     r3, r3
             beq     SHORT G_M22299_IG07
             add     sp, 16
@@ -148,7 +149,7 @@ G_M22299_IG04:        ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5
             subs    r3, sp, r3
             bvc     SHORT G_M22299_IG05
             movs    r3, 0
-                       ;; size=34 bbWeight=0.80 PerfScore 10.40
+                       ;; size=36 bbWeight=0.80 PerfScore 10.40
 G_M22299_IG05:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [sp]
             sub     r0, sp, 0x1000
@@ -164,26 +165,26 @@ G_M22299_IG06:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             add     r3, sp, 16
                        ;; size=10 bbWeight=0.80 PerfScore 3.20
 G_M22299_IG07:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            str     r12, [sp]  // [V13 OutArgs]
+            str     r2, [sp]   // [V13 OutArgs]
             str     r6, [sp+0x04]  // [V13 OutArgs+0x04]
             str     r7, [sp+0x08]  // [V13 OutArgs+0x08]
             mov     r0, r5
             ; gcrRegs +[r0]
-            ldr     r1, [r9+0x30]  // [V14 tmp1]
-            mov     r2, r8
+            mov     r1, r8
+            mov     r2, r12
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
-            str     r0, [r9+0x3C]  // [V04 loc0]
-                       ;; size=34 bbWeight=0.80 PerfScore 8.80
+            str     r0, [r9+0x4C]  // [V04 loc0]
+                       ;; size=30 bbWeight=0.80 PerfScore 8.80
 G_M22299_IG08:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movs    r1, 0
-            str     r1, [r9+0x38]  // [V07 loc3]
+            str     r1, [r9+0x44]  // [V07 loc3]
                        ;; size=6 bbWeight=0.80 PerfScore 1.60
 G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            addw    r1, r9, 60 // [V04 loc0]
+            addw    r1, r9, 76 // [V04 loc0]
             mov     r0, r5
             ; gcrRegs +[r0]
             mov     r2, r4
@@ -194,11 +195,11 @@ G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0 r2 r4-r5]
-            ldr     r0, [r9+0x3C]  // [V04 loc0]
+            ldr     r0, [r9+0x4C]  // [V04 loc0]
             ; gcrRegs +[r0]
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
-            ldr     lr, [r9+0x14]  // [V39 GsCookie]
+            ldr     lr, [r9+0x1C]  // [V36 GsCookie]
             cmp     r12, lr
             beq     SHORT G_M22299_IG10
             movw    r12, 0xd1ff
@@ -209,7 +210,7 @@ G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
 G_M22299_IG10:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs +[r0]
             mov     sp, r9
-            add     sp, 68
+            add     sp, 84
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=8 bbWeight=1 PerfScore 3.00
 G_M22299_IG11:        ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
...

+30 (+5.21%) : 156632.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)

@@ -14,29 +14,29 @@
 ;  V02 arg2         [V02,T02] (  6,  4   )     int  ->   r6         single-def
 ;  V03 arg3         [V03,T03] (  6,  4   )     int  ->   r7         single-def
 ;  V04 loc0         [V04    ] (  5,  3   )     ref  ->  [r11-0x24]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
-;  V05 loc1         [V05,T06] (  6,  3.20)     int  ->   r8        
+;  V05 loc1         [V05,T06] (  6,  3.20)     int  ->  [r11-0x28]  spill-single-def
 ;* V06 loc2         [V06    ] (  0,  0   )     int  ->  zero-ref   
-;  V07 loc3         [V07    ] (  3,  2.40)   byref  ->  [r11-0x28]  must-init pinned
+;  V07 loc3         [V07    ] (  3,  2.40)   byref  ->  [r11-0x2C]  must-init pinned
 ;* V08 loc4         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;* V09 loc5         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
 ;* V10 loc6         [V10    ] (  0,  0   )     int  ->  zero-ref   
-;  V11 loc7         [V11    ] (  3,  0   )   byref  ->  [r11-0x2C]  must-init pinned
+;  V11 loc7         [V11    ] (  3,  0   )   byref  ->  [r11-0x30]  must-init pinned
 ;  V12 loc8         [V12,T14] (  2,  1.60)     int  ->   r3        
 ;  V13 OutArgs      [V13    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T05] (  7,  4   )     int  ->  [r11-0x30]  spill-single-def
-;  V15 tmp2         [V15,T08] (  3,  3.20)     ref  ->  [r11-0x48]  class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
-;  V16 tmp3         [V16,T07] (  6,  3.20)     int  ->  [r11-0x34]  spill-single-def "guarded devirt return temp"
+;  V14 tmp1         [V14,T05] (  7,  4   )     int  ->  [r11-0x34]  spill-single-def
+;  V15 tmp2         [V15,T08] (  3,  3.20)     ref  ->  [r11-0x50]  class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+;  V16 tmp3         [V16,T07] (  6,  3.20)     int  ->  [r11-0x38]  spill-single-def "guarded devirt return temp"
 ;* V17 tmp4         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
 ;* V18 tmp5         [V18,T16] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V19 tmp6         [V19,T17] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp7         [V20    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
-;  V21 tmp8         [V21,T13] (  5,  1.60)     int  ->  [r11-0x38]  "Inline stloc first use temp"
+;  V21 tmp8         [V21,T13] (  5,  1.60)     int  ->  [r11-0x3C]  "Inline stloc first use temp"
 ;* V22 tmp9         [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V23 tmp10        [V23    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V24 tmp11        [V24    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V25 tmp12        [V25    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V26 tmp13        [V26    ] (  3,  2.40)    long  ->  [r11-0x40]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V27 tmp14        [V27    ] (  1,  0.80)     int  ->  [r11-0x44]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V26 tmp13        [V26    ] (  3,  2.40)    long  ->  [r11-0x48]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V27 tmp14        [V27    ] (  1,  0.80)     int  ->  [r11-0x4C]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
 ;* V28 tmp15        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V29 tmp16        [V29,T11] (  4,  2.40)     int  ->   r3         "Inline stloc first use temp"
 ;* V30 tmp17        [V30    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
@@ -44,36 +44,36 @@
 ;  V32 tmp19        [V32,T10] (  2,  3.20)     int  ->   r0         "argument with side effect"
 ;  V33 tmp20        [V33,T18] (  3,  0   )     ref  ->   r0         single-def "arr expr"
 ;  V34 tmp21        [V34,T19] (  2,  0   )     int  ->   r3         "Cast away GC"
-;* V35 tmp22        [V35,T23] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V36 tmp23        [V36,T20] (  2,  0   )     int  ->   r1         "argument with side effect"
-;  V37 tmp24        [V37,T21] (  2,  0   )     int  ->   r2         "argument with side effect"
-;  V38 tmp25        [V38,T22] (  2,  0   )     int  ->   r3         "argument with side effect"
-;  V39 GsCookie     [V39    ] (  1,  1   )     int  ->  [r11-0x4C]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V40 rat0         [V40,T12] (  3,  2.40)     int  ->   lr         "field V30.lo (fldOffset=0x0)" P-INDEP
-;  V41 rat1         [V41,T15] (  2,  1.60)     int  ->   r0         "field V30.hi (fldOffset=0x4)" P-INDEP
-;  V42 rat2         [V42,T04] (  3,  4.80)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V35 tmp22        [V35,T20] (  2,  0   )     int  ->   r3         "argument with side effect"
+;  V36 GsCookie     [V36    ] (  1,  1   )     int  ->  [r11-0x54]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
+;  V37 rat0         [V37,T12] (  3,  2.40)     int  ->   lr         "field V30.lo (fldOffset=0x0)" P-INDEP
+;  V38 rat1         [V38,T15] (  2,  1.60)     int  ->   r0         "field V30.hi (fldOffset=0x4)" P-INDEP
+;  V39 rat2         [V39,T04] (  3,  4.80)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  TEMP_02                                     ref  ->  [r11-0x58]
+;  TEMP_01                                     int  ->  [r11-0x5C]
 ;
-; Lcl frame size = 68
+; Lcl frame size = 84
 
 G_M22299_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 68
+            sub     sp, 84
             mov     r9, sp
-            add     r11, sp, 96
+            add     r11, sp, 112
             movs    r4, 0
-            str     r4, [r9+0x3C]  // [V04 loc0]
-            str     r4, [r9+0x38]  // [V07 loc3]
-            str     r4, [r9+0x34]  // [V11 loc7]
+            str     r4, [r9+0x4C]  // [V04 loc0]
+            str     r4, [r9+0x44]  // [V07 loc3]
+            str     r4, [r9+0x40]  // [V11 loc7]
+            str     r4, [r9+0x18]  // [TEMP_02]
             movw    r4, 0xd1ff
             movt    r4, 0xd1ff
-            str     r4, [r9+0x14]  // [V39 GsCookie]
+            str     r4, [r9+0x1C]  // [V36 GsCookie]
             mov     r5, r0
             ; gcrRegs +[r5]
             mov     r4, r1
             ; gcrRegs +[r4]
             mov     r6, r2
             mov     r7, r3
-                       ;; size=46 bbWeight=1 PerfScore 15.00
+                       ;; size=50 bbWeight=1 PerfScore 16.00
 G_M22299_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             cmp     r4, 0
             beq     G_M22299_IG11
@@ -85,35 +85,35 @@ G_M22299_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
                        ;; size=20 bbWeight=1 PerfScore 7.00
 G_M22299_IG03:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             ldr     r8, [r4+0x04]
+            str     r8, [r9+0x48]
             add     r2, r4, 8
             ; byrRegs +[r2]
-            str     r2, [r9+0x38]  // [V07 loc3]
-            ldr     lr, [r9+0x38]  // [V07 loc3]
+            str     r2, [r9+0x44]  // [V07 loc3]
+            ldr     lr, [r9+0x44]  // [V07 loc3]
             ; byrRegs +[lr]
-            mov     r1, lr
-            str     r1, [r9+0x30]  // [V14 tmp1]
+            str     lr, [r9+0x3C]  // [V14 tmp1]
             movw    r2, 0xd1ff
             ; byrRegs -[r2]
             movt    r2, 0xd1ff
-            ldr     lr, [r2]
-            ; gcrRegs +[lr]
-            ; byrRegs -[lr]
-            str     lr, [r9+0x18]  // [V15 tmp2]
+            ldr     r12, [r2]
+            ; gcrRegs +[r12]
+            str     r12, [r9+0x20] // [V15 tmp2]
             ; GC ptr vars +{V15}
-            ldrsb   r2, [lr]
-            cmp     r1, 0
+            ldrsb   r2, [r12]
+            cmp     lr, 0
             beq     G_M22299_IG12
-            addw    r2, r9, 32 // [V26 tmp13]
-            addw    r3, r9, 28 // [V27 tmp14]
-            mov     r0, r1
+            addw    r2, r9, 40 // [V26 tmp13]
+            addw    r3, r9, 36 // [V27 tmp14]
+            mov     r0, lr
             mov     r1, r8
-            movw    r12, 0xd1ff
-            movt    r12, 0xd1ff
-            ldr     r12, [r12]
-            blx     r12        // <unknown method>
-            ; gcrRegs -[lr]
-            ldr     r1, [r9+0x30]  // [V14 tmp1]
-            subs    r0, r0, r1
+            movw    r8, 0xd1ff
+            movt    r8, 0xd1ff
+            ldr     r8, [r8]
+            blx     r8     // <unknown method>
+            ; gcrRegs -[r12]
+            ; byrRegs -[lr]
+            ldr     r8, [r9+0x3C]  // [V14 tmp1]
+            sub     r0, r0, r8
             movs    r1, 2
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -121,8 +121,8 @@ G_M22299_IG03:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             mov     r3, r0
             mov     r0, r3
             asrs    r1, r0, 31
-            ldr     r2, [r9+0x20]  // [V26 tmp13]
-            ldr     lr, [r9+0x24]  // [V26 tmp13+0x04]
+            ldr     r2, [r9+0x28]  // [V26 tmp13]
+            ldr     lr, [r9+0x2C]  // [V26 tmp13+0x04]
             adds    r12, r0, r2
             adc     r0, r1, lr
             mov     lr, r12
@@ -130,16 +130,17 @@ G_M22299_IG03:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             cmp     lr, 0x80000000
             sbcs    r0, r1
             bhs     G_M22299_IG14
-            cmp     r3, r8
+            ldr     r12, [r9+0x48] // [V05 loc1]
+            cmp     r3, r12
             bne     SHORT G_M22299_IG13
-                       ;; size=132 bbWeight=0.80 PerfScore 32.80
+                       ;; size=142 bbWeight=0.80 PerfScore 33.60
 G_M22299_IG04:        ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
             ; GC ptr vars -{V15}
-            mov     r12, lr
-            str     r12, [r9+0x2C] // [V16 tmp3]
-            cmp     r12, 0x400
-            bgt     SHORT G_M22299_IG15
-            mov     r3, r12
+            mov     r2, lr
+            str     r2, [r9+0x38]  // [V16 tmp3]
+            cmp     r2, 0x400
+            bgt     G_M22299_IG15
+            mov     r3, r2
             tst     r3, r3
             beq     SHORT G_M22299_IG07
             add     sp, 16
@@ -148,7 +149,7 @@ G_M22299_IG04:        ; bbWeight=0.80, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5
             subs    r3, sp, r3
             bvc     SHORT G_M22299_IG05
             movs    r3, 0
-                       ;; size=34 bbWeight=0.80 PerfScore 10.40
+                       ;; size=36 bbWeight=0.80 PerfScore 10.40
 G_M22299_IG05:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [sp]
             sub     r0, sp, 0x1000
@@ -164,26 +165,26 @@ G_M22299_IG06:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             add     r3, sp, 16
                        ;; size=10 bbWeight=0.80 PerfScore 3.20
 G_M22299_IG07:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            str     r12, [sp]  // [V13 OutArgs]
+            str     r2, [sp]   // [V13 OutArgs]
             str     r6, [sp+0x04]  // [V13 OutArgs+0x04]
             str     r7, [sp+0x08]  // [V13 OutArgs+0x08]
             mov     r0, r5
             ; gcrRegs +[r0]
-            ldr     r1, [r9+0x30]  // [V14 tmp1]
-            mov     r2, r8
+            mov     r1, r8
+            mov     r2, r12
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
-            str     r0, [r9+0x3C]  // [V04 loc0]
-                       ;; size=34 bbWeight=0.80 PerfScore 8.80
+            str     r0, [r9+0x4C]  // [V04 loc0]
+                       ;; size=30 bbWeight=0.80 PerfScore 8.80
 G_M22299_IG08:        ; bbWeight=0.80, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movs    r1, 0
-            str     r1, [r9+0x38]  // [V07 loc3]
+            str     r1, [r9+0x44]  // [V07 loc3]
                        ;; size=6 bbWeight=0.80 PerfScore 1.60
 G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            addw    r1, r9, 60 // [V04 loc0]
+            addw    r1, r9, 76 // [V04 loc0]
             mov     r0, r5
             ; gcrRegs +[r0]
             mov     r2, r4
@@ -194,11 +195,11 @@ G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0 r2 r4-r5]
-            ldr     r0, [r9+0x3C]  // [V04 loc0]
+            ldr     r0, [r9+0x4C]  // [V04 loc0]
             ; gcrRegs +[r0]
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
-            ldr     lr, [r9+0x14]  // [V39 GsCookie]
+            ldr     lr, [r9+0x1C]  // [V36 GsCookie]
             cmp     r12, lr
             beq     SHORT G_M22299_IG10
             movw    r12, 0xd1ff
@@ -209,7 +210,7 @@ G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
 G_M22299_IG10:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs +[r0]
             mov     sp, r9
-            add     sp, 68
+            add     sp, 84
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=8 bbWeight=1 PerfScore 3.00
 G_M22299_IG11:        ; bbWeight=0.20, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
...

benchmarks.run_tiered.linux.arm.checked.mch

-16 (-19.51%) : 11098.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)

@@ -5,52 +5,39 @@
 ; partially interruptible
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [sp+0x2C]  do-not-enreg[] class-hnd <System.String>
-;  V01 arg1         [V01    ] (  1,  1   )  ushort  ->  [sp+0x28]  do-not-enreg[]
-;  V02 arg2         [V02    ] (  1,  1   )     int  ->  [sp+0x24]  do-not-enreg[]
-;  V03 arg3         [V03    ] (  1,  1   )   byref  ->  [sp+0x20]  do-not-enreg[]
+;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [sp+0x1C]  do-not-enreg[] class-hnd <System.String>
+;  V01 arg1         [V01    ] (  1,  1   )  ushort  ->  [sp+0x18]  do-not-enreg[]
+;  V02 arg2         [V02    ] (  1,  1   )     int  ->  [sp+0x14]  do-not-enreg[]
+;  V03 arg3         [V03    ] (  1,  1   )   byref  ->  [sp+0x10]  do-not-enreg[]
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05    ] (  1,  1   )     int  ->  [sp+0x1C]  do-not-enreg[] "Cast away GC"
-;  V06 tmp2         [V06    ] (  1,  1   )     int  ->  [sp+0x18]  do-not-enreg[] "argument with side effect"
-;  V07 tmp3         [V07    ] (  1,  1   )     ref  ->  [sp+0x14]  do-not-enreg[] must-init "argument with side effect"
-;  V08 tmp4         [V08    ] (  1,  1   )     int  ->  [sp+0x10]  do-not-enreg[] "argument with side effect"
-;  V09 tmp5         [V09    ] (  1,  1   )     int  ->  [sp+0x0C]  do-not-enreg[] "argument with side effect"
+;  V05 tmp1         [V05    ] (  1,  1   )     int  ->  [sp+0x0C]  do-not-enreg[] "Cast away GC"
+;  V06 tmp2         [V06    ] (  1,  1   )     int  ->  [sp+0x08]  do-not-enreg[] "argument with side effect"
 ;
-; Lcl frame size = 48
+; Lcl frame size = 32
 
 G_M56677_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r10,r11,lr}
-            sub     sp, 48
-            add     r11, sp, 56
-            movs    r4, 0
-            str     r4, [sp+0x14]  // [V07 tmp3]
-            str     r0, [sp+0x2C]  // [V00 arg0]
-            str     r1, [sp+0x28]  // [V01 arg1]
-            str     r2, [sp+0x24]  // [V02 arg2]
-            str     r3, [sp+0x20]  // [V03 arg3]
-                       ;; size=22 bbWeight=1 PerfScore 9.00
+            sub     sp, 32
+            add     r11, sp, 40
+            str     r0, [sp+0x1C]  // [V00 arg0]
+            str     r1, [sp+0x18]  // [V01 arg1]
+            str     r2, [sp+0x14]  // [V02 arg2]
+            str     r3, [sp+0x10]  // [V03 arg3]
+                       ;; size=18 bbWeight=1 PerfScore 7.00
 G_M56677_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ldr     r1, [sp+0x2C]
+            ldr     r2, [sp+0x10]
+            ; byrRegs +[r2]
+            str     r2, [sp+0x0C]  // [V05 tmp1]
+            ldr     r2, [sp+0x0C]  // [V05 tmp1]
+            ; byrRegs -[r2]
+            str     r2, [sp+0x08]  // [V06 tmp2]
+            ldr     r2, [sp+0x08]  // [V06 tmp2]
+            str     r2, [sp]   // [V04 OutArgs]
+            ldr     r2, [sp+0x18]  // [V01 arg1]
+            uxth    r2, r2
+            ldr     r1, [sp+0x1C]  // [V00 arg0]
             ; gcrRegs +[r1]
-            str     r1, [sp+0x14]  // [V07 tmp3]
-            ldr     r1, [sp+0x28]  // [V01 arg1]
-            ; gcrRegs -[r1]
-            uxth    r1, r1
-            str     r1, [sp+0x10]  // [V08 tmp4]
-            ldr     r1, [sp+0x24]  // [V02 arg2]
-            str     r1, [sp+0x0C]  // [V09 tmp5]
-            ldr     r1, [sp+0x20]  // [V03 arg3]
-            ; byrRegs +[r1]
-            str     r1, [sp+0x1C]  // [V05 tmp1]
-            ldr     r1, [sp+0x1C]  // [V05 tmp1]
-            ; byrRegs -[r1]
-            str     r1, [sp+0x18]  // [V06 tmp2]
-            ldr     r1, [sp+0x18]  // [V06 tmp2]
-            str     r1, [sp]   // [V04 OutArgs]
-            ldr     r1, [sp+0x14]  // [V07 tmp3]
-            ; gcrRegs +[r1]
-            ldr     r2, [sp+0x10]  // [V08 tmp4]
-            ldr     r3, [sp+0x0C]  // [V09 tmp5]
+            ldr     r3, [sp+0x14]  // [V02 arg2]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    lr, 0xd1ff
@@ -58,13 +45,13 @@ G_M56677_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r1]
-                       ;; size=54 bbWeight=1 PerfScore 22.00
+                       ;; size=42 bbWeight=1 PerfScore 16.00
 G_M56677_IG03:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 48
+            add     sp, 32
             pop     {r4,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 82, prolog size 14, PerfScore 33.00, instruction count 33, allocated bytes for code 82 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
+; Total bytes of code 66, prolog size 10, PerfScore 25.00, instruction count 25, allocated bytes for code 66 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -76,11 +63,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 41 (0x00029) Actual length = 82 (0x000052)
+  Function Length   : 33 (0x00021) Actual length = 66 (0x000042)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    0C          add sp, sp, #48                     ; opsize 16
+    08          add sp, sp, #32                     ; opsize 16
     AC 10       pop {r4,r10,r11,lr}                 ; opsize 32
     FF          end
 

-4 (-9.09%) : 11103.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier1)

@@ -10,32 +10,28 @@
 ;
 ;  V00 arg0         [V00,T00] (  3,  3   )     ref  ->   r0         class-hnd single-def <System.String>
 ;  V01 arg1         [V01,T02] (  3,  3   )  ushort  ->   r1         single-def
-;  V02 arg2         [V02,T03] (  3,  3   )     int  ->   r2         single-def
+;  V02 arg2         [V02,T03] (  3,  3   )     int  ->   lr         single-def
 ;  V03 arg3         [V03,T01] (  3,  3   )   byref  ->   r3         single-def
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V06 tmp2         [V06,T05] (  2,  4   )     int  ->   r3         "Cast away GC"
-;  V07 tmp3         [V07,T06] (  2,  4   )     int  ->   r3         "argument with side effect"
-;  V08 tmp4         [V08,T04] (  2,  4   )     ref  ->   r0         single-def "argument with side effect"
-;  V09 tmp5         [V09,T07] (  2,  4   )     int  ->   lr         "argument with side effect"
-;  V10 tmp6         [V10,T08] (  2,  4   )     int  ->  r12         "argument with side effect"
+;  V06 tmp2         [V06,T04] (  2,  4   )     int  ->   r3         "Cast away GC"
+;  V07 tmp3         [V07,T05] (  2,  4   )     int  ->   r3         "argument with side effect"
 ;
 ; Lcl frame size = 12
 
 G_M56677_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {lr}
             sub     sp, 12
-                       ;; size=4 bbWeight=1 PerfScore 2.00
+            mov     lr, r2
+                       ;; size=6 bbWeight=1 PerfScore 3.00
 G_M56677_IG02:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref
             ; gcrRegs +[r0]
             ; byrRegs +[r3]
-            uxth    lr, r1
-            mov     r12, r2
             str     r3, [sp]
+            uxth    r2, r1
             mov     r1, r0
             ; gcrRegs +[r1]
-            mov     r2, lr
-            mov     r3, r12
+            mov     r3, lr
             ; byrRegs -[r3]
             movw    r0, 0xd1ff
             ; gcrRegs -[r0]
@@ -46,13 +42,13 @@ G_M56677_IG02:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, by
             blx     lr     // Interop+Globalization:EnumCalendarInfo(int,System.String,ushort,int,int):ubyte
             ; gcrRegs -[r1]
             ; gcr arg pop 0
-                       ;; size=36 bbWeight=1 PerfScore 12.00
+                       ;; size=30 bbWeight=1 PerfScore 10.00
 G_M56677_IG03:        ; bbWeight=1, epilog, nogc, extend
             add     sp, 12
             pop     {pc}
                        ;; size=4 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 44, prolog size 4, PerfScore 16.00, instruction count 16, allocated bytes for code 44 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier1)
+; Total bytes of code 40, prolog size 4, PerfScore 15.00, instruction count 15, allocated bytes for code 40 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -64,7 +60,7 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 22 (0x00016) Actual length = 44 (0x00002c)
+  Function Length   : 20 (0x00014) Actual length = 40 (0x000028)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----

-18 (-8.82%) : 5327.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0-FullOpts)

@@ -8,53 +8,48 @@
 ; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] (  3,  6   )     ref  ->   r4         this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver>
-;  V01 arg1         [V01,T06] (  6,  8.50)     ref  ->   r5         class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite>
-;  V02 arg2         [V02,T11] (  4,  3   )  struct ( 8) [sp+0x38]  do-not-enreg[SA] multireg-arg single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext>
-;  V03 loc0         [V03,T07] (  5,  6.50)     ref  ->   r6         class-hnd <<unknown class>>
-;  V04 loc1         [V04,T02] (  5, 16.50)     int  ->   r7        
+;  V00 this         [V00,T05] (  3,  6   )     ref  ->   r5         this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver>
+;  V01 arg1         [V01,T04] (  5,  8   )     ref  ->   r4         class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite>
+;  V02 arg2         [V02,T08] (  4,  3   )  struct ( 8) [sp+0x30]  do-not-enreg[SA] multireg-arg single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext>
+;  V03 loc0         [V03,T06] (  5,  6.50)     ref  ->   r6         class-hnd <<unknown class>>
+;  V04 loc1         [V04,T00] (  7, 24.50)     int  ->   r7        
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T01] (  3, 24   )     ref  ->   r0         "arr expr"
-;* V07 tmp2         [V07,T08] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V08 tmp3         [V08,T03] (  2, 16   )     ref  ->   r1         "argument with side effect"
-;  V09 tmp4         [V09,T04] (  2, 16   )     ref  ->   r2         "argument with side effect"
-;  V10 tmp5         [V10,T00] (  4, 32   )     int  ->  [sp+0x0C]  spill-single-def "argument with side effect"
-;* V11 tmp6         [V11,T09] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V12 tmp7         [V12,T10] (  3,  6   )     ref  ->   r0         single-def "argument with side effect"
-;  V13 cse0         [V13,T13] (  2,  4.50)     ref  ->  [sp+0x08]  spill-single-def hoist "CSE - moderate"
-;  V14 cse1         [V14,T14] (  2,  4.50)     int  ->  r10         hoist "CSE - moderate"
-;  V15 cse2         [V15,T12] (  3,  5   )     int  ->   r8         "CSE - moderate"
+;  V06 tmp1         [V06,T01] (  3, 24   )     ref  ->   r1         "arr expr"
+;  V07 tmp2         [V07,T02] (  2, 16   )     ref  ->   r1         "argument with side effect"
+;  V08 tmp3         [V08,T03] (  2, 16   )     ref  ->   r2         "argument with side effect"
+;  V09 tmp4         [V09,T07] (  3,  6   )     ref  ->   r0         single-def "argument with side effect"
+;  V10 cse0         [V10,T12] (  3,  2.50)     ref  ->   r1         "CSE - aggressive"
+;  V11 cse1         [V11,T10] (  2,  4.50)     ref  ->   r9         hoist "CSE - aggressive"
+;  V12 cse2         [V12,T11] (  2,  4.50)     int  ->  r10         hoist "CSE - aggressive"
+;  V13 cse3         [V13,T09] (  3,  5   )     int  ->   r8         "CSE - aggressive"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 12
 
 G_M56674_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r2,r3}
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 20
-            add     r11, sp, 48
-            mov     r4, r0
-            ; gcrRegs +[r4]
-            mov     r5, r1
+            sub     sp, 12
+            add     r11, sp, 40
+            mov     r5, r0
             ; gcrRegs +[r5]
+            mov     r4, r1
+            ; gcrRegs +[r4]
                        ;; size=16 bbWeight=1 PerfScore 6.00
 G_M56674_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            ldr     r1, [r5+0x20]
+            ldr     r1, [r4+0x20]
             ; gcrRegs +[r1]
-            ldr     r1, [r1+0x04]
-            ; gcrRegs -[r1]
-            cmp     r1, 0
+            ldr     r0, [r1+0x04]
+            cmp     r0, 0
             bne     SHORT G_M56674_IG04
                        ;; size=8 bbWeight=1 PerfScore 4.00
-G_M56674_IG03:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r4]
+G_M56674_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r1 r5]
             movw    r6, 0xd1ff
             movt    r6, 0xd1ff
             b       SHORT G_M56674_IG06
                        ;; size=10 bbWeight=0.50 PerfScore 1.50
-G_M56674_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[r4]
-            ldr     r1, [r5+0x20]
-            ; gcrRegs +[r1]
+G_M56674_IG04:        ; bbWeight=0.50, gcrefRegs=0032 {r1 r4 r5}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs +[r1 r5]
             ldr     r1, [r1+0x04]
             ; gcrRegs -[r1]
             movw    r0, 0xd1ff
@@ -69,43 +64,38 @@ G_M56674_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             ldr     r8, [r6+0x04]
             cmp     r8, 0
             ble     SHORT G_M56674_IG06
-            ldr     r9, [sp+0x38]
+            ldr     r9, [sp+0x30]
             ; gcrRegs +[r9]
-            str     r9, [sp+0x08]
-            ; GC ptr vars +{V13}
-            ldr     r10, [sp+0x3C]
-                       ;; size=48 bbWeight=0.50 PerfScore 7.50
-G_M56674_IG05:        ; bbWeight=4, gcVars=00002000 {V13}, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, gcvars, byref, isz
+            ldr     r10, [sp+0x34]
+                       ;; size=42 bbWeight=0.50 PerfScore 6.50
+G_M56674_IG05:        ; bbWeight=4, gcrefRegs=0270 {r4 r5 r6 r9}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
-            mov     lr, r7
-            str     lr, [sp+0x0C]
-            ldr     r0, [r5+0x20]
-            ; gcrRegs +[r0]
-            ldr     r1, [r0+0x04]
-            cmp     lr, r1
-            bhs     SHORT G_M56674_IG08
-            adds    r0, 8
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            lsl     r1, lr, 2
-            ldr     r1, [r0+r1]
+            ldr     r1, [r4+0x20]
             ; gcrRegs +[r1]
-            mov     r0, r4
-            ; gcrRegs +[r0]
-            ; byrRegs -[r0]
+            ldr     r2, [r1+0x04]
+            cmp     r7, r2
+            bhs     SHORT G_M56674_IG08
+            adds    r1, 8
+            ; gcrRegs -[r1]
+            ; byrRegs +[r1]
+            lsls    r2, r7, 2
+            ldr     r1, [r1+r2]
+            ; gcrRegs +[r1]
+            ; byrRegs -[r1]
             mov     r2, r9
             ; gcrRegs +[r2]
             mov     r3, r10
-            movw    r12, 0xd1ff
-            movt    r12, 0xd1ff
-            ldr     r12, [r12]
-            ldr     r9, [r0]
-            ; gcrRegs -[r9]
-            blx     r12        // Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext,System.__Canon]:VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.__Canon:this
+            mov     r0, r5
+            ; gcrRegs +[r0]
+            movw    lr, 0xd1ff
+            movt    lr, 0xd1ff
+            ldr     lr, [lr]
+            ldr     r12, [r0]
+            blx     lr     // Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext,System.__Canon]:VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.__Canon:this
             ; gcrRegs -[r1-r2]
             mov     r2, r0
             ; gcrRegs +[r2]
-            ldr     r1, [sp+0x0C]  // [V10 tmp5]
+            mov     r1, r7
             mov     r0, r6
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -113,17 +103,14 @@ G_M56674_IG05:        ; bbWeight=4, gcVars=00002000 {V13}, gcrefRegs=0270 {r4 r5
             ; gcrRegs -[r0 r2]
             adds    r7, r7, 1
             cmp     r8, r7
-            ldr     r9, [sp+0x08]  // [V13 cse0]
-            ; gcrRegs +[r9]
             bgt     SHORT G_M56674_IG05
-                       ;; size=72 bbWeight=4 PerfScore 108.00
-G_M56674_IG06:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[r4 r9]
-            ; GC ptr vars -{V13}
-            ldr     r0, [r5+0x1C]
+                       ;; size=60 bbWeight=4 PerfScore 96.00
+G_M56674_IG06:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r5 r9]
+            ldr     r0, [r4+0x1C]
             ; gcrRegs +[r0]
             movs    r3, 0
-            str     r3, [sp]   // [V05 OutArgs]
+            str     r3, [sp]
             mov     r3, r6
             ; gcrRegs +[r3]
             mov     r1, 0x2000000
@@ -132,10 +119,10 @@ G_M56674_IG06:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6},
             ldr     lr, [lr+0x3C]
             ldr     lr, [lr+0x14]
             blx     lr     // <unknown method>
-            ; gcrRegs -[r3 r5-r6]
+            ; gcrRegs -[r3-r4 r6]
                        ;; size=28 bbWeight=1 PerfScore 10.00
 G_M56674_IG07:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 20
+            add     sp, 12
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,lr}
             add     sp, 8
             bx      lr
@@ -148,7 +135,7 @@ G_M56674_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 204, prolog size 12, PerfScore 141.00, instruction count 73, allocated bytes for code 204 (MethodHash=ece7229d) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0-FullOpts)
+; Total bytes of code 186, prolog size 12, PerfScore 128.00, instruction count 68, allocated bytes for code 186 (MethodHash=ece7229d) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0-FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -160,19 +147,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 102 (0x00066) Actual length = 204 (0x0000cc)
+  Function Length   : 93 (0x0005d) Actual length = 186 (0x0000ba)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 5 (0x05)
   ---- Unwind codes ----
-    05          add sp, sp, #20                     ; opsize 16
+    03          add sp, sp, #12                     ; opsize 16
     DF          pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}  ; opsize 32
     EC 0C       pop {r2,r3}                         ; opsize 16
     FF          end
     ---- Epilog start at index 5 ----
-    05          add sp, sp, #20                     ; opsize 16
+    03          add sp, sp, #12                     ; opsize 16
     DF          pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}  ; opsize 32
     02          add sp, sp, #8                      ; opsize 16
     FD          end + nop                           ; opsize 16

+18 (+2.51%) : 26700.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime

@@ -9,7 +9,7 @@
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T05] (  8, 10   )     int  ->   r4         single-def
-;  V01 loc0         [V01,T15] (  6,  7.04)     ref  ->   r5         class-hnd exact single-def <System.DateTime[]>
+;  V01 loc0         [V01,T13] (  6,  7.04)     ref  ->   r5         class-hnd exact single-def <System.DateTime[]>
 ;  V02 loc1         [V02,T04] (  9, 17   )     int  ->   r6        
 ;* V03 loc2         [V03,T29] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V04 loc3         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op double-align <System.DateTime>
@@ -19,7 +19,7 @@
 ;* V08 tmp1         [V08    ] (  0,  0   )  struct ( 8) zero-ref    double-align "Strict ordering of exceptions for Array store" <System.DateTime>
 ;* V09 tmp2         [V09    ] (  0,  0   )  double  ->  zero-ref    "Inlining Arg"
 ;  V10 tmp3         [V10,T12] (  4,  8   )  double  ->  f16:f17     "Inlining Arg"
-;  V11 tmp4         [V11,T19] (  3,  3   )  double  ->  [sp+0x38]  spill-single-def "Inline stloc first use temp"
+;  V11 tmp4         [V11,T18] (  3,  3   )  double  ->  [sp+0x38]  spill-single-def "Inline stloc first use temp"
 ;* V12 tmp5         [V12    ] (  0,  0   )  double  ->  zero-ref    "Inline stloc first use temp"
 ;* V13 tmp6         [V13    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V14 tmp7         [V14    ] (  0,  0   )    long  ->  zero-ref    single-def "Inline stloc first use temp"
@@ -28,7 +28,7 @@
 ;* V17 tmp10        [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op double-align "Inlining Arg" <System.DateTime>
 ;* V18 tmp11        [V18    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op double-align "NewObj constructor temp" <System.DateTime>
 ;* V19 tmp12        [V19    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;* V20 tmp13        [V20,T16] (  0,  0   )  double  ->  zero-ref    "Inline stloc first use temp"
+;* V20 tmp13        [V20,T14] (  0,  0   )  double  ->  zero-ref    "Inline stloc first use temp"
 ;* V21 tmp14        [V21    ] (  0,  0   )  double  ->  zero-ref    "Inline stloc first use temp"
 ;* V22 tmp15        [V22    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V23 tmp16        [V23    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
@@ -39,7 +39,7 @@
 ;  V28 tmp21        [V28,T02] ( 11, 21   )    long  ->  [sp+0x30]  do-not-enreg[F] "field V04._dateData (fldOffset=0x0)" P-INDEP
 ;  V29 tmp22        [V29    ] (  5,  5   )    long  ->  [sp+0x40]  do-not-enreg[X] addr-exposed "field V05._dateData (fldOffset=0x0)" P-DEP
 ;* V30 tmp23        [V30    ] (  0,  0   )    long  ->  zero-ref    "field V08._dateData (fldOffset=0x0)" P-INDEP
-;  V31 tmp24        [V31,T20] (  3,  3   )    long  ->  [sp+0x28]  do-not-enreg[F] single-def "field V15._dateData (fldOffset=0x0)" P-INDEP
+;  V31 tmp24        [V31,T19] (  3,  3   )    long  ->  [sp+0x28]  do-not-enreg[F] single-def "field V15._dateData (fldOffset=0x0)" P-INDEP
 ;* V32 tmp25        [V32    ] (  0,  0   )    long  ->  zero-ref    "field V17._dateData (fldOffset=0x0)" P-INDEP
 ;  V33 tmp26        [V33,T06] (  6, 12   )    long  ->  [sp+0x20]  do-not-enreg[F] "field V18._dateData (fldOffset=0x0)" P-INDEP
 ;  V34 tmp27        [V34,T07] (  6, 12   )    long  ->  [sp+0x18]  do-not-enreg[F] "field V24._dateData (fldOffset=0x0)" P-INDEP
@@ -47,32 +47,31 @@
 ;* V36 tmp29        [V36    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V37 tmp30        [V37,T36] (  2,  0   )     ref  ->   r2         "argument with side effect"
 ;* V38 cse0         [V38    ] (  0,  0   )    long  ->  zero-ref    "CSE - aggressive"
-;* V39 cse1         [V39    ] (  0,  0   )    long  ->  zero-ref    "CSE - aggressive"
-;* V40 cse2         [V40    ] (  0,  0   )    long  ->  zero-ref    "CSE - conservative"
-;  V41 rat0         [V41,T21] (  3,  3   )     int  ->   r0         "field V14.lo (fldOffset=0x0)" P-INDEP
-;  V42 rat1         [V42,T22] (  3,  3   )     int  ->   r1         "field V14.hi (fldOffset=0x4)" P-INDEP
-;  V43 rat2         [V43,T08] (  6, 12   )     int  ->   r3         "field V23.lo (fldOffset=0x0)" P-INDEP
-;  V44 rat3         [V44,T09] (  6, 12   )     int  ->   r2         "field V23.hi (fldOffset=0x4)" P-INDEP
-;  V45 rat4         [V45,T23] (  2,  3   )     int  ->   r0         "field V35.lo (fldOffset=0x0)" P-INDEP
-;  V46 rat5         [V46,T24] (  2,  3   )     int  ->   r1         "field V35.hi (fldOffset=0x4)" P-INDEP
-;* V47 rat6         [V47,T17] (  0,  0   )     int  ->  zero-ref    "field V36.lo (fldOffset=0x0)" P-INDEP
-;* V48 rat7         [V48,T18] (  0,  0   )     int  ->  zero-ref    "field V36.hi (fldOffset=0x4)" P-INDEP
-;  V49 rat8         [V49,T13] (  2,  7.92)     int  ->   r3         "field V38.lo (fldOffset=0x0)" P-INDEP
-;  V50 rat9         [V50,T14] (  2,  7.92)     int  ->   r2         "field V38.hi (fldOffset=0x4)" P-INDEP
-;  V51 rat10        [V51,T10] (  3, 11.88)     int  ->   r0         "field V39.lo (fldOffset=0x0)" P-INDEP
-;  V52 rat11        [V52,T11] (  3, 11.88)     int  ->   r1         "field V39.hi (fldOffset=0x4)" P-INDEP
-;  V53 rat12        [V53,T32] (  3,  0.12)     int  ->   r0         "field V40.lo (fldOffset=0x0)" P-INDEP
-;  V54 rat13        [V54,T33] (  3,  0.12)     int  ->   r1         "field V40.hi (fldOffset=0x4)" P-INDEP
-;  V55 rat14        [V55    ] (  1,  2   )    long  ->  [sp+0x08]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V56 rat15        [V56,T25] (  2,  3   )     int  ->   r0         "field V55.lo (fldOffset=0x0)" P-INDEP
-;  V57 rat16        [V57,T26] (  2,  3   )     int  ->   r1         "field V55.hi (fldOffset=0x4)" P-INDEP
-;  V58 rat17        [V58    ] (  1,  2   )    long  ->  [sp+0x00]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V59 rat18        [V59,T27] (  2,  3   )     int  ->   r0         "field V58.lo (fldOffset=0x0)" P-INDEP
-;  V60 rat19        [V60,T28] (  2,  3   )     int  ->   r1         "field V58.hi (fldOffset=0x4)" P-INDEP
-;  V61 rat20        [V61,T01] (  2, 15.84)     int  ->   r3         "ReplaceWithLclVar is creating a new local variable"
-;  V62 rat21        [V62,T00] (  3, 23.76)   byref  ->   r3         "ReplaceWithLclVar is creating a new local variable"
-;  V63 rat22        [V63,T31] (  2,  0.16)     int  ->   r3         "ReplaceWithLclVar is creating a new local variable"
-;  V64 rat23        [V64,T30] (  3,  0.24)   byref  ->   r3         "ReplaceWithLclVar is creating a new local variable"
+;* V39 cse1         [V39    ] (  0,  0   )    long  ->  zero-ref    "CSE - conservative"
+;  V40 cse2         [V40,T28] (  2,  2   )  double  ->   f8:f9      "CSE - moderate"
+;* V41 cse3         [V41,T15] (  0,  0   )  double  ->  zero-ref    multi-def "CSE - aggressive"
+;  V42 rat0         [V42,T20] (  3,  3   )     int  ->   r0         "field V14.lo (fldOffset=0x0)" P-INDEP
+;  V43 rat1         [V43,T21] (  3,  3   )     int  ->   r1         "field V14.hi (fldOffset=0x4)" P-INDEP
+;  V44 rat2         [V44,T08] (  6, 12   )     int  ->   r8         "field V23.lo (fldOffset=0x0)" P-INDEP
+;  V45 rat3         [V45,T09] (  6, 12   )     int  ->   r9         "field V23.hi (fldOffset=0x4)" P-INDEP
+;  V46 rat4         [V46,T22] (  2,  3   )     int  ->   r0         "field V35.lo (fldOffset=0x0)" P-INDEP
+;  V47 rat5         [V47,T23] (  2,  3   )     int  ->   r1         "field V35.hi (fldOffset=0x4)" P-INDEP
+;* V48 rat6         [V48,T16] (  0,  0   )     int  ->  zero-ref    "field V36.lo (fldOffset=0x0)" P-INDEP
+;* V49 rat7         [V49,T17] (  0,  0   )     int  ->  zero-ref    "field V36.hi (fldOffset=0x4)" P-INDEP
+;  V50 rat8         [V50,T10] (  3, 11.88)     int  ->   r0         "field V38.lo (fldOffset=0x0)" P-INDEP
+;  V51 rat9         [V51,T11] (  3, 11.88)     int  ->   r1         "field V38.hi (fldOffset=0x4)" P-INDEP
+;  V52 rat10        [V52,T32] (  3,  0.12)     int  ->   r0         "field V39.lo (fldOffset=0x0)" P-INDEP
+;  V53 rat11        [V53,T33] (  3,  0.12)     int  ->   r1         "field V39.hi (fldOffset=0x4)" P-INDEP
+;  V54 rat12        [V54    ] (  1,  2   )    long  ->  [sp+0x08]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V55 rat13        [V55,T24] (  2,  3   )     int  ->   r0         "field V54.lo (fldOffset=0x0)" P-INDEP
+;  V56 rat14        [V56,T25] (  2,  3   )     int  ->   r1         "field V54.hi (fldOffset=0x4)" P-INDEP
+;  V57 rat15        [V57    ] (  1,  2   )    long  ->  [sp+0x00]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V58 rat16        [V58,T26] (  2,  3   )     int  ->   r0         "field V57.lo (fldOffset=0x0)" P-INDEP
+;  V59 rat17        [V59,T27] (  2,  3   )     int  ->   r1         "field V57.hi (fldOffset=0x4)" P-INDEP
+;  V60 rat18        [V60,T01] (  2, 15.84)     int  ->   r3         "ReplaceWithLclVar is creating a new local variable"
+;  V61 rat19        [V61,T00] (  3, 23.76)   byref  ->   r3         "ReplaceWithLclVar is creating a new local variable"
+;  V62 rat20        [V62,T31] (  2,  0.16)     int  ->   r3         "ReplaceWithLclVar is creating a new local variable"
+;  V63 rat21        [V63,T30] (  3,  0.24)   byref  ->   r3         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 72
 
@@ -209,21 +208,21 @@ G_M59090_IG03:        ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
             ; byrRegs -[r3]
             movt    r3, 0xd1ff
             movs    r2, 8
-            adds    r3, r3, r0
-            adcs    r2, r1
+            adds    r8, r3, r0
+            adc     r9, r2, r1
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
-            cmp     r3, r0
-            sbcs    r0, r2, r1
-            bhs     SHORT G_M59090_IG12
+            cmp     r8, r0
+            sbcs    r0, r9, r1
+            bhs     G_M59090_IG12
             ldr     r0, [sp+0x30]  // [V28 tmp21]
             ldr     r1, [sp+0x34]  // [V28 tmp21+0x04]
             and     r0, r0, 0
             and     r1, r1, -0x40000000
-            orrs    r0, r3
-            orrs    r1, r2
+            orr     r0, r8, r0
+            orr     r1, r9, r1
             str     r0, [sp+0x18]  // [V34 tmp27]
             str     r1, [sp+0x1C]  // [V34 tmp27+0x04]
             ldr     r0, [sp+0x18]  // [V34 tmp27]
@@ -240,7 +239,7 @@ G_M59090_IG03:        ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
             adds    r7, r7, 1
             cmp     r7, r4
             blt     SHORT G_M59090_IG03
-                       ;; size=132 bbWeight=3.96 PerfScore 205.92
+                       ;; size=142 bbWeight=3.96 PerfScore 205.92
 G_M59090_IG04:        ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
             b       SHORT G_M59090_IG06
                        ;; size=2 bbWeight=1 PerfScore 1.00
@@ -272,21 +271,21 @@ G_M59090_IG05:        ; bbWeight=0.04, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
             ; byrRegs -[r3]
             movt    r3, 0xd1ff
             movs    r2, 8
-            adds    r3, r3, r0
-            adcs    r2, r1
+            adds    r8, r3, r0
+            adc     r9, r2, r1
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
-            cmp     r3, r0
-            sbcs    r0, r2, r1
+            cmp     r8, r0
+            sbcs    r0, r9, r1
             bhs     SHORT G_M59090_IG12
             ldr     r0, [sp+0x30]  // [V28 tmp21]
             ldr     r1, [sp+0x34]  // [V28 tmp21+0x04]
             and     r0, r0, 0
             and     r1, r1, -0x40000000
-            orrs    r0, r3
-            orrs    r1, r2
+            orr     r0, r8, r0
+            orr     r1, r9, r1
             str     r0, [sp+0x18]  // [V34 tmp27]
             str     r1, [sp+0x1C]  // [V34 tmp27+0x04]
             ldr     r0, [sp+0x18]  // [V34 tmp27]
@@ -303,7 +302,7 @@ G_M59090_IG05:        ; bbWeight=0.04, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
             adds    r7, r7, 1
             cmp     r7, r4
             blt     SHORT G_M59090_IG05
-                       ;; size=136 bbWeight=0.04 PerfScore 2.20
+                       ;; size=144 bbWeight=0.04 PerfScore 2.20
 G_M59090_IG06:        ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             mov     r0, r5
             ; gcrRegs +[r0]
@@ -392,7 +391,7 @@ G_M59090_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             bkpt    
                        ;; size=86 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 716, prolog size 22, PerfScore 307.12, instruction count 254, allocated bytes for code 716 (MethodHash=11d1192d) for method MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (Tier0-FullOpts)
+; Total bytes of code 734, prolog size 22, PerfScore 307.12, instruction count 254, allocated bytes for code 734 (MethodHash=11d1192d) for method MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (Tier0-FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -404,7 +403,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 358 (0x00166) Actual length = 716 (0x0002cc)
+  Function Length   : 367 (0x0016f) Actual length = 734 (0x0002de)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+6.67%) : 26653.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)

@@ -16,12 +16,12 @@
 ;* V05 tmp4         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
 ;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
 ;  V07 cse0         [V07,T02] (  5,  5   )     ref  ->   r2         "CSE - aggressive"
-;  V08 cse1         [V08,T04] (  3,  3   )     ref  ->   r1         "CSE - aggressive"
+;  V08 cse1         [V08,T04] (  3,  3   )     ref  ->  [sp+0x04]  spill-single-def "CSE - aggressive"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M35133_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r4,lr}
+            push    {r2,r3,r4,lr}
             mov     r4, r0
             ; gcrRegs +[r4]
                        ;; size=4 bbWeight=1 PerfScore 2.00
@@ -51,31 +51,36 @@ G_M35133_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             ; gcrRegs +[r1]
             movs    r0, 0
             strh    r0, [r1+0x14]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            str     r3, [sp+0x04]
+            ; GC ptr vars +{V08}
             adds    r0, r1, 4
             ; byrRegs +[r0]
-            movw    r1, 0xd1ff
-            ; gcrRegs -[r1]
-            movt    r1, 0xd1ff
+            mov     r1, r3
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
             blx     r12        // CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[r4] +[r1]
+            ; gcrRegs -[r1 r4]
             ; byrRegs -[r0]
             add     r0, r2, 8
             ; byrRegs +[r0]
+            ldr     r1, [sp+0x04]  // [V08 cse1]
+            ; gcrRegs +[r1]
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
+            ; GC ptr vars -{V08}
             blx     r12        // CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[r1]
             ; byrRegs -[r0]
             movs    r3, 0
             str     r3, [r2+0x0C]
-                       ;; size=84 bbWeight=1 PerfScore 28.00
+                       ;; size=90 bbWeight=1 PerfScore 31.00
 G_M35133_IG03:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r4,pc}
+            pop     {r2,r3,r4,pc}
                        ;; size=2 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 90, prolog size 2, PerfScore 31.00, instruction count 31, allocated bytes for code 90 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
+; Total bytes of code 96, prolog size 2, PerfScore 34.00, instruction count 34, allocated bytes for code 96 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -87,12 +92,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 45 (0x0002d) Actual length = 90 (0x00005a)
+  Function Length   : 48 (0x00030) Actual length = 96 (0x000060)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    D4          pop {r4,lr}                         ; opsize 16
-    FF          end
+    ED 1C       pop {r2,r3,r4,lr}                   ; opsize 16
     FF          end
     FF          end
 

+16 (+10.81%) : 53306.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (Tier1)

@@ -8,33 +8,31 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T03] (  2,  4   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
 ;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V04 tmp3         [V04,T05] (  4,  3.50)     ref  ->   r1        
+;  V04 tmp3         [V04,T04] (  4,  3.50)     ref  ->   r1        
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;  V06 tmp5         [V06,T02] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-;  V07 tmp6         [V07,T07] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp7         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    "field V05.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp8         [V09,T10] (  0,  0   )   ubyte  ->  zero-ref    "field V05.value (fldOffset=0x1)" P-INDEP
-;  V10 tmp9         [V10,T01] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp10        [V11,T08] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V12 tmp11        [V12,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;  V13 cse0         [V13,T06] (  4,  3   )     int  ->   r5         "CSE - aggressive"
+;  V06 tmp5         [V06,T01] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+;  V07 tmp6         [V07,T05] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp7         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    "field V05.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp8         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    "field V05.value (fldOffset=0x1)" P-INDEP
+;  V10 tmp9         [V10,T00] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M24931_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M24931_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r5, 0xd1ff
-            movt    r5, 0xd1ff
-            ldr     r1, [r5]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            ldr     r1, [r0]
             ; gcrRegs +[r1]
             cmp     r1, 0
             bne     SHORT G_M24931_IG04
@@ -51,12 +49,14 @@ G_M24931_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs +[r1]
             str     r1, [sp]
             ; GC ptr vars +{V06}
-            ldr     r3, [r5-0x30]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movt    r0, 0xd1ff
+            ldr     r3, [r0]
             ; gcrRegs +[r3]
             cmp     r3, 0
             beq     SHORT G_M24931_IG06
             adds    r0, r1, 4
-            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             mov     r1, r3
             movw    r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M24931_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r2, [sp]
             ; gcrRegs +[r2]
             str     r1, [r2+0x0C]
-            mov     r0, r5
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
             mov     r1, r2
             ; gcrRegs +[r1]
             movw    r12, 0xd1ff
@@ -78,17 +79,17 @@ G_M24931_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=72 bbWeight=0.50 PerfScore 12.50
+                       ;; size=84 bbWeight=0.50 PerfScore 14.00
 G_M24931_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r2]
             ; GC ptr vars -{V06}
-            movs    r0, 1
-            strb    r0, [sp+0x04]
-            movs    r0, 16
-            strb    r0, [sp+0x05]
+            movs    r3, 1
+            strb    r3, [sp+0x04]
+            movs    r3, 16
+            strb    r3, [sp+0x05]
+            ldrh    r3, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldrh    r3, [sp+0x04]
             movs    r2, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -97,8 +98,9 @@ G_M24931_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4},
             ; gcrRegs -[r1 r4]
                        ;; size=34 bbWeight=1 PerfScore 11.00
 G_M24931_IG05:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M24931_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r0]
             movw    r3, 0xd1ff
@@ -108,7 +110,7 @@ G_M24931_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 148, prolog size 8, PerfScore 32.50, instruction count 50, allocated bytes for code 148 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (Tier1)
+; Total bytes of code 164, prolog size 10, PerfScore 36.00, instruction count 55, allocated bytes for code 164 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -120,7 +122,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 74 (0x0004a) Actual length = 148 (0x000094)
+  Function Length   : 82 (0x00052) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -128,7 +130,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

coreclr_tests.run.linux.arm.checked.mch

-40 (-23.26%) : 397572.dasm - (dynamicClass):ABIStress_TailCaller649(ABIStress.S2P,ABIStress.Hfa1,ABIStress.S7U,ABIStress.S5U,int,ABIStress.S17U,ABIStress.Hfa2,ABIStress.S32U,ABIStress.S10U,ABIStress.Hfa2,ABIStress.S14U,ABIStress.S9U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.Hfa1,ABIStress.S15U,double,ABIStress.Hfa1,ABIStress.S5U,ABIStress.S4U,short,ABIStress.S6U,ABIStress.Hfa2,ABIStress.S8P,int):int (FullOpts)

@@ -8,21 +8,21 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00    ] (  1,  1   )  struct ( 4) [sp+0x60]  single-def <ABIStress.S2P>
-;  V01 arg1         [V01    ] (  5,  5   )  struct ( 8) [sp+0x48]  HFA(float)  multireg-arg single-def <ABIStress.Hfa1>
+;  V00 arg0         [V00    ] (  1,  1   )  struct ( 4) [sp+0x38]  single-def <ABIStress.S2P>
+;  V01 arg1         [V01    ] (  5,  5   )  struct ( 8) [sp+0x28]  HFA(float)  multireg-arg single-def <ABIStress.Hfa1>
 ;* V02 arg2         [V02    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] single-def <ABIStress.S7U>
 ;* V03 arg3         [V03    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] single-def <ABIStress.S5U>
 ;* V04 arg4         [V04    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V05 arg5         [V05    ] (  0,  0   )  struct (20) zero-ref    do-not-enreg[S] single-def <ABIStress.S17U>
 ;* V06 arg6         [V06    ] (  0,  0   )  struct (32) zero-ref    HFA(double)  do-not-enreg[SA] multireg-arg single-def double-align <ABIStress.Hfa2>
 ;* V07 arg7         [V07    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] single-def <ABIStress.S32U>
-;  V08 arg8         [V08,T12] (  1,  1   )  struct (12) [sp+0xAC]  do-not-enreg[S] single-def <ABIStress.S10U>
+;  V08 arg8         [V08,T03] (  3,  3   )  struct (12) [sp+0x84]  do-not-enreg[SA] multireg-arg single-def <ABIStress.S10U>
 ;* V09 arg9         [V09    ] (  0,  0   )  struct (32) zero-ref    HFA(double)  do-not-enreg[S] single-def double-align <ABIStress.Hfa2>
-;  V10 arg10        [V10,T13] (  1,  1   )  struct (16) [sp+0xD8]  do-not-enreg[S] single-def <ABIStress.S14U>
+;  V10 arg10        [V10,T06] (  1,  1   )  struct (16) [sp+0xB0]  do-not-enreg[S] single-def <ABIStress.S14U>
 ;* V11 arg11        [V11    ] (  0,  0   )  struct (12) zero-ref    do-not-enreg[S] single-def <ABIStress.S9U>
 ;* V12 arg12        [V12    ] (  0,  0   )  struct ( 4) zero-ref    single-def <ABIStress.S2P>
 ;* V13 arg13        [V13    ] (  0,  0   )  struct (32) zero-ref    HFA(double)  do-not-enreg[S] single-def double-align <ABIStress.Hfa2>
-;  V14 arg14        [V14    ] (  1,  1   )  struct ( 8) [sp+0x118]  HFA(float)  single-def <ABIStress.Hfa1>
+;  V14 arg14        [V14    ] (  1,  1   )  struct ( 8) [sp+0xF0]  HFA(float)  single-def <ABIStress.Hfa1>
 ;* V15 arg15        [V15    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] single-def <ABIStress.S15U>
 ;* V16 arg16        [V16    ] (  0,  0   )  double  ->  zero-ref    single-def
 ;* V17 arg17        [V17    ] (  0,  0   )  struct ( 8) zero-ref    HFA(float)  single-def <ABIStress.Hfa1>
@@ -30,113 +30,91 @@
 ;* V19 arg19        [V19    ] (  0,  0   )  struct ( 4) zero-ref    do-not-enreg[S] single-def <ABIStress.S4U>
 ;* V20 arg20        [V20    ] (  0,  0   )   short  ->  zero-ref    single-def
 ;* V21 arg21        [V21    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] single-def <ABIStress.S6U>
-;  V22 arg22        [V22    ] (  1,  1   )  struct (32) [sp+0x158]  HFA(double)  single-def double-align <ABIStress.Hfa2>
-;  V23 arg23        [V23    ] (  2,  2   )  struct ( 8) [sp+0x178]  single-def double-align <ABIStress.S8P>
+;  V22 arg22        [V22    ] (  1,  1   )  struct (32) [sp+0x130]  HFA(double)  single-def double-align <ABIStress.Hfa2>
+;  V23 arg23        [V23    ] (  2,  2   )  struct ( 8) [sp+0x150]  single-def double-align <ABIStress.S8P>
 ;* V24 arg24        [V24    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;  V25 OutArgs      [V25    ] (  1,  1   )  struct (28) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V26 tmp1         [V26    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "NewObj constructor temp" <ABIStress.S2U>
-;* V27 tmp2         [V27,T14] (  0,  0   )   ubyte  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V28 tmp3         [V28,T15] (  0,  0   )   ubyte  ->  zero-ref    single-def "Inline stloc first use temp"
-;  V29 tmp4         [V29,T08] (  1,  1   )   short  ->  [sp+0x60]  do-not-enreg[] single-def "field V00.F0 (fldOffset=0x0)" P-DEP
-;  V30 tmp5         [V30,T01] (  4,  4   )   float  ->  [sp+0x48]  do-not-enreg[] single-def "field V01.F0 (fldOffset=0x0)" P-DEP
-;  V31 tmp6         [V31,T03] (  3,  3   )   float  ->  [sp+0x4C]  do-not-enreg[] single-def "field V01.F1 (fldOffset=0x4)" P-DEP
+;* V27 tmp2         [V27,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V28 tmp3         [V28,T08] (  0,  0   )   ubyte  ->  zero-ref    single-def "Inline stloc first use temp"
+;  V29 tmp4         [V29,T04] (  1,  1   )   short  ->  [sp+0x38]  do-not-enreg[] single-def "field V00.F0 (fldOffset=0x0)" P-DEP
+;  V30 tmp5         [V30,T00] (  4,  4   )   float  ->  [sp+0x28]  do-not-enreg[] single-def "field V01.F0 (fldOffset=0x0)" P-DEP
+;  V31 tmp6         [V31,T02] (  3,  3   )   float  ->  [sp+0x2C]  do-not-enreg[] single-def "field V01.F1 (fldOffset=0x4)" P-DEP
 ;* V32 tmp7         [V32    ] (  0,  0   )   short  ->  zero-ref    do-not-enreg[] single-def "field V12.F0 (fldOffset=0x0)" P-DEP
-;  V33 tmp8         [V33,T16] (  1,  1   )   float  ->  [sp+0x118]  do-not-enreg[] single-def "field V14.F0 (fldOffset=0x0)" P-DEP
+;  V33 tmp8         [V33,T09] (  1,  1   )   float  ->  [sp+0xF0]  do-not-enreg[] single-def "field V14.F0 (fldOffset=0x0)" P-DEP
 ;* V34 tmp9         [V34    ] (  0,  0   )   float  ->  zero-ref    do-not-enreg[] single-def "field V14.F1 (fldOffset=0x4)" P-DEP
 ;* V35 tmp10        [V35    ] (  0,  0   )   float  ->  zero-ref    do-not-enreg[] single-def "field V17.F0 (fldOffset=0x0)" P-DEP
 ;* V36 tmp11        [V36    ] (  0,  0   )   float  ->  zero-ref    do-not-enreg[] single-def "field V17.F1 (fldOffset=0x4)" P-DEP
 ;* V37 tmp12        [V37    ] (  0,  0   )  double  ->  zero-ref    do-not-enreg[] single-def "field V22.F0 (fldOffset=0x0)" P-DEP
 ;* V38 tmp13        [V38    ] (  0,  0   )  double  ->  zero-ref    do-not-enreg[] single-def "field V22.F1 (fldOffset=0x8)" P-DEP
-;  V39 tmp14        [V39,T17] (  1,  1   )  double  ->  [sp+0x168]  do-not-enreg[] single-def "field V22.F2 (fldOffset=0x10)" P-DEP
+;  V39 tmp14        [V39,T10] (  1,  1   )  double  ->  [sp+0x140]  do-not-enreg[] single-def "field V22.F2 (fldOffset=0x10)" P-DEP
 ;* V40 tmp15        [V40    ] (  0,  0   )  double  ->  zero-ref    do-not-enreg[] single-def "field V22.F3 (fldOffset=0x18)" P-DEP
-;  V41 tmp16        [V41,T09] (  2,  2   )    long  ->  [sp+0x178]  do-not-enreg[] single-def "field V23.F0 (fldOffset=0x0)" P-DEP
-;* V42 tmp17        [V42,T18] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V26.F0 (fldOffset=0x0)" P-INDEP
-;* V43 tmp18        [V43,T19] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V26.F1 (fldOffset=0x1)" P-INDEP
-;  V44 tmp19        [V44    ] (  2,  2   )     int  ->  [sp+0x44]  do-not-enreg[X] must-init addr-exposed "Return value for tail call dispatcher"
-;  V45 ReturnAddress[V45    ] (  1,  1   )     int  ->  [sp+0x5C]  do-not-enreg[X] addr-exposed "Return address"
-;  V46 tmp21        [V46,T02] (  3,  6   )  struct ( 4) [sp+0x40]  do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-;  V47 tmp22        [V47,T04] (  2,  4   )   float  ->   f0         "argument with side effect"
-;  V48 tmp23        [V48,T00] (  4,  8   )  struct (12) [sp+0x34]  do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S10U>
-;  V49 tmp24        [V49,T05] (  2,  4   )   float  ->   f1         "argument with side effect"
-;* V50 tmp25        [V50    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
-;  V51 tmp26        [V51,T06] (  2,  4   )  double  ->   f2:f3      "argument with side effect"
-;  V52 tmp27        [V52,T07] (  2,  4   )  struct (16) [sp+0x24]  do-not-enreg[S] "argument with side effect" <ABIStress.S14U>
-;  V53 rat0         [V53,T10] (  2,  2   )     int  ->   r3         "field V50.lo (fldOffset=0x0)" P-INDEP
-;  V54 rat1         [V54,T11] (  2,  2   )     int  ->   lr         "field V50.hi (fldOffset=0x4)" P-INDEP
+;  V41 tmp16        [V41,T05] (  2,  2   )    long  ->  [sp+0x150]  do-not-enreg[] single-def "field V23.F0 (fldOffset=0x0)" P-DEP
+;* V42 tmp17        [V42,T11] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V26.F0 (fldOffset=0x0)" P-INDEP
+;* V43 tmp18        [V43,T12] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V26.F1 (fldOffset=0x1)" P-INDEP
+;  V44 tmp19        [V44    ] (  2,  2   )     int  ->  [sp+0x24]  do-not-enreg[X] must-init addr-exposed "Return value for tail call dispatcher"
+;  V45 ReturnAddress[V45    ] (  1,  1   )     int  ->  [sp+0x34]  do-not-enreg[X] addr-exposed "Return address"
+;  V46 tmp21        [V46,T01] (  3,  6   )  struct ( 4) [sp+0x20]  do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
 ;
-; Lcl frame size = 84
+; Lcl frame size = 48
 
 G_M38866_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r0,r1,r2,r3}
-            push    {r10,r11,lr}
-            sub     sp, 84
-            add     r11, sp, 88
+            push    {r11,lr}
+            sub     sp, 48
+            add     r11, sp, 48
             movs    r0, 0
-            str     r0, [sp+0x44]
-            vstr    s0, [sp+0x48]
-            vstr    s1, [sp+0x4C]
+            str     r0, [sp+0x24]
+            vstr    s0, [sp+0x28]
+            vstr    s1, [sp+0x2C]
                        ;; size=24 bbWeight=1 PerfScore 8.00
 G_M38866_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            vldr    s0, [sp+0x48]
-            ldr     r0, [sp+0xAC]
-            str     r0, [sp+0x34]
+            ldr     r0, [sp+0x150]
+            ldr     r1, [sp+0x154]
+            str     r0, [sp]
+            str     r1, [sp+0x04]
             ldr     r0, [sp+0xB0]
-            str     r0, [sp+0x38]
-            ldrh    r0, [sp+0xB4]
-            strh    r0, [sp+0x3C]
-            vldr    s1, [sp+0x118]
-            ldr     r3, [sp+0x178]
-            ldr     lr, [sp+0x17C]
-            vldr    d1, [sp+0x168]
-            ldr     r0, [sp+0xD8]
-            str     r0, [sp+0x24]
-            ldr     r0, [sp+0xDC]
-            str     r0, [sp+0x28]
-            ldr     r0, [sp+0xE0]
-            str     r0, [sp+0x2C]
-            ldrh    r0, [sp+0xE4]
-            strh    r0, [sp+0x30]
+            str     r0, [sp+0x08]
+            ldr     r0, [sp+0xB4]
+            str     r0, [sp+0x0C]
+            ldr     r0, [sp+0xB8]
+            str     r0, [sp+0x10]
+            ldr     r0, [sp+0xBC]
+            str     r0, [sp+0x14]
             movs    r0, 180
-            strb    r0, [sp+0x40]
+            strb    r0, [sp+0x20]
             movs    r0, 235
-            strb    r0, [sp+0x41]
-            ldr     r0, [sp+0x34]
-            ldr     r1, [sp+0x38]
-            ldr     r2, [sp+0x3C]
-            str     r3, [sp]
-            str     lr, [sp+0x04]
-            ldr     r3, [sp+0x24]
-            str     r3, [sp+0x08]
-            ldr     r3, [sp+0x28]
-            str     r3, [sp+0x0C]
-            ldr     r3, [sp+0x2C]
-            str     r3, [sp+0x10]
-            ldr     r3, [sp+0x30]
-            str     r3, [sp+0x14]
-            ldrh    r3, [sp+0x40]
-            str     r3, [sp+0x18]
+            strb    r0, [sp+0x21]
+            ldrh    r0, [sp+0x20]
+            str     r0, [sp+0x18]
+            ldr     r0, [sp+0x84]
+            ldr     r1, [sp+0x88]
+            ldr     r2, [sp+0x8C]
+            vldr    s1, [sp+0xF0]
+            vldr    d1, [sp+0x140]
+            vldr    s0, [sp+0x28]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // <unknown method>
-            add     r0, sp, 92
-            add     r2, sp, 68
+            add     r0, sp, 52
+            add     r2, sp, 36
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // <unknown method>
-            ldr     r0, [sp+0x44]
-                       ;; size=138 bbWeight=1 PerfScore 51.00
+            ldr     r0, [sp+0x24]
+                       ;; size=98 bbWeight=1 PerfScore 37.00
 G_M38866_IG03:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 84
-            pop     {r10,r11,lr}
+            add     sp, 48
+            pop     {r11,lr}
             add     sp, 16
             bx      lr
                        ;; size=10 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 172, prolog size 16, PerfScore 63.00, instruction count 63, allocated bytes for code 172 (MethodHash=4426682d) for method (dynamicClass):ABIStress_TailCaller649(ABIStress.S2P,ABIStress.Hfa1,ABIStress.S7U,ABIStress.S5U,int,ABIStress.S17U,ABIStress.Hfa2,ABIStress.S32U,ABIStress.S10U,ABIStress.Hfa2,ABIStress.S14U,ABIStress.S9U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.Hfa1,ABIStress.S15U,double,ABIStress.Hfa1,ABIStress.S5U,ABIStress.S4U,short,ABIStress.S6U,ABIStress.Hfa2,ABIStress.S8P,int):int (FullOpts)
+; Total bytes of code 132, prolog size 16, PerfScore 49.00, instruction count 49, allocated bytes for code 132 (MethodHash=4426682d) for method (dynamicClass):ABIStress_TailCaller649(ABIStress.S2P,ABIStress.Hfa1,ABIStress.S7U,ABIStress.S5U,int,ABIStress.S17U,ABIStress.Hfa2,ABIStress.S32U,ABIStress.S10U,ABIStress.Hfa2,ABIStress.S14U,ABIStress.S9U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.Hfa1,ABIStress.S15U,double,ABIStress.Hfa1,ABIStress.S5U,ABIStress.S4U,short,ABIStress.S6U,ABIStress.Hfa2,ABIStress.S8P,int):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -148,20 +126,20 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 86 (0x00056) Actual length = 172 (0x0000ac)
+  Function Length   : 66 (0x00042) Actual length = 132 (0x000084)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 6 (0x06)
   ---- Unwind codes ----
-    15          add sp, sp, #84                     ; opsize 16
-    AC 00       pop {r10,r11,lr}                    ; opsize 32
+    0C          add sp, sp, #48                     ; opsize 16
+    A8 00       pop {r11,lr}                        ; opsize 32
     EC 0F       pop {r0,r1,r2,r3}                   ; opsize 16
     FF          end
     ---- Epilog start at index 6 ----
-    15          add sp, sp, #84                     ; opsize 16
-    AC 00       pop {r10,r11,lr}                    ; opsize 32
+    0C          add sp, sp, #48                     ; opsize 16
+    A8 00       pop {r11,lr}                        ; opsize 32
     04          add sp, sp, #16                     ; opsize 16
     FD          end + nop                           ; opsize 16
     FF          end

-42 (-23.08%) : 396870.dasm - (dynamicClass):ILSTUBCallTailCallTarget(int,byref,int) (FullOpts)

@@ -12,32 +12,30 @@
 ;  V02 arg2         [V02,T03] (  4,  4   )     int  ->   r2         single-def
 ;* 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,T05] (  2,  4   )  struct (32) [sp+0x28]  HFA(double)  do-not-enreg[S] double-align "impAppendStmt" <ABIStress.Hfa2>
+;  V05 tmp1         [V05,T01] (  5, 10   )  struct (32) [sp+0x08]  HFA(double)  do-not-enreg[SA] multireg-arg double-align "impAppendStmt" <ABIStress.Hfa2>
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 4) zero-ref    "impAppendStmt" <ABIStress.S3U>
-;  V07 tmp3         [V07,T06] (  2,  4   )   float  ->  f16         "impAppendStmt"
-;  V08 tmp4         [V08,T07] (  2,  4   )     int  ->   r9         "impAppendStmt"
-;  V09 tmp5         [V09,T08] (  2,  4   )     int  ->  r10         "impAppendStmt"
-;  V10 tmp6         [V10,T09] (  2,  4   )   float  ->  f17         "impAppendStmt"
-;  V11 tmp7         [V11,T10] (  2,  4   )   float  ->  f18         "impAppendStmt"
+;  V07 tmp3         [V07,T05] (  2,  4   )   float  ->   f8         "impAppendStmt"
+;  V08 tmp4         [V08,T06] (  2,  4   )     int  ->   r3         "impAppendStmt"
+;  V09 tmp5         [V09,T07] (  2,  4   )     int  ->   lr         "impAppendStmt"
+;  V10 tmp6         [V10,T08] (  2,  4   )   float  ->   f9         "impAppendStmt"
+;  V11 tmp7         [V11,T09] (  2,  4   )   float  ->  f10         "impAppendStmt"
 ;* V12 tmp8         [V12    ] (  0,  0   )  struct ( 4) zero-ref    "impAppendStmt" <ABIStress.S1P>
-;  V13 tmp9         [V13,T11] (  2,  2   )   ubyte  ->   r6         "field V06.F0 (fldOffset=0x0)" P-INDEP
-;  V14 tmp10        [V14,T12] (  2,  2   )   ubyte  ->   r7         "field V06.F1 (fldOffset=0x1)" P-INDEP
-;  V15 tmp11        [V15,T13] (  2,  2   )   ubyte  ->   r8         "field V06.F2 (fldOffset=0x2)" P-INDEP
-;  V16 tmp12        [V16,T14] (  2,  2   )   ubyte  ->  [sp+0x24]  spill-single-def "field V12.F0 (fldOffset=0x0)" P-INDEP
-;  V17 tmp13        [V17,T02] (  4,  8   )  struct ( 4) [sp+0x20]  do-not-enreg[SF] "by-value struct argument" <ABIStress.S3U>
-;  V18 tmp14        [V18,T01] (  5, 10   )  struct (32) [sp+0x00]  HFA(double)  do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <ABIStress.Hfa2>
+;  V13 tmp9         [V13,T10] (  2,  2   )   ubyte  ->   r0         "field V06.F0 (fldOffset=0x0)" P-INDEP
+;  V14 tmp10        [V14,T11] (  2,  2   )   ubyte  ->   r1         "field V06.F1 (fldOffset=0x1)" P-INDEP
+;  V15 tmp11        [V15,T12] (  2,  2   )   ubyte  ->   r2         "field V06.F2 (fldOffset=0x2)" P-INDEP
+;  V16 tmp12        [V16,T13] (  2,  2   )   ubyte  ->  r12         "field V12.F0 (fldOffset=0x0)" P-INDEP
+;  V17 tmp13        [V17,T02] (  4,  8   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <ABIStress.S3U>
 ;
-; Lcl frame size = 76
+; Lcl frame size = 44
 
 G_M50245_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            vpush   {d8-d9}
-            sub     sp, 76
-            add     r11, sp, 120
+            push    {r4,r5,r6,r11,lr}
+            sub     sp, 44
+            add     r11, sp, 56
             mov     r4, r0
             mov     r5, r1
             ; byrRegs +[r5]
-                       ;; size=18 bbWeight=1 PerfScore 6.00
+                       ;; size=14 bbWeight=1 PerfScore 5.00
 G_M50245_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
             movs    r1, 0
             str     r1, [r2+0x04]
@@ -45,62 +43,48 @@ G_M50245_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byre
             movt    r1, HIGH ADDRESS G_M50245_IG03
             str     r1, [r2]
             add     r1, r4, 16
-            add     r0, sp, 40
+            add     r0, sp, 8
             ; byrRegs +[r0]
             movs    r2, 32
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
             blx     r12        // CORINFO_HELP_MEMCPY
             ; byrRegs -[r0]
-            ldrb    r6, [r4+0x30]
-            ldrb    r7, [r4+0x31]
-            ldrb    r8, [r4+0x32]
-            vldr    s16, [r4+0x34]
-            ldrb    r9, [r4+0x38]
-            ldr     r10, [r4+0x3C]
-            vldr    s17, [r4+0x40]
-            vldr    s18, [r4+0x44]
-            ldrb    r3, [r4+0x48]
-            strb    r3, [sp+0x24]  // [V16 tmp12]
-            movs    r2, 2
-            str     r2, [r4]
-            add     r0, sp, 0  // [V18 tmp14]
-            ; byrRegs +[r0]
-            add     r1, sp, 40 // [V05 tmp1]
-            ; byrRegs +[r1]
-            movs    r2, 32
-            movw    r12, 0xd1ff
-            movt    r12, 0xd1ff
-            blx     r12        // CORINFO_HELP_MEMCPY
-            ; byrRegs -[r0-r1]
-            strb    r6, [sp+0x20]  // [V17 tmp13]
-            strb    r7, [sp+0x21]  // [V17 tmp13+0x01]
-            strb    r8, [sp+0x22]  // [V17 tmp13+0x02]
-            vldr    d0, [sp]   // [V18 tmp14]
-            vldr    d1, [sp+0x08]  // [V18 tmp14+0x08]
-            vldr    d2, [sp+0x10]  // [V18 tmp14+0x10]
-            vldr    d3, [sp+0x18]  // [V18 tmp14+0x18]
-            ldr     r0, [sp+0x20]  // [V17 tmp13]
-            vmov    s8, s16
-            mov     r1, r9
-            mov     r2, r10
-            vmov    s9, s17
-            vmov    s10, s18
-            ldrb    r3, [sp+0x24]  // [V16 tmp12]
+            ldrb    r0, [r4+0x30]
+            ldrb    r1, [r4+0x31]
+            ldrb    r2, [r4+0x32]
+            vldr    s8, [r4+0x34]
+            ldrb    r3, [r4+0x38]
+            ldr     lr, [r4+0x3C]
+            vldr    s9, [r4+0x40]
+            vldr    s10, [r4+0x44]
+            ldrb    r12, [r4+0x48]
+            movs    r6, 2
+            str     r6, [r4]
+            strb    r0, [sp+0x04]
+            strb    r1, [sp+0x05]
+            strb    r2, [sp+0x06]
+            ldr     r0, [sp+0x04]
+            vldr    d0, [sp+0x08]
+            vldr    d1, [sp+0x10]
+            vldr    d2, [sp+0x18]
+            vldr    d3, [sp+0x20]
+            mov     r1, r3
+            mov     r2, lr
+            mov     r3, r12
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             blx     lr     // <unknown method>
-                       ;; size=152 bbWeight=1 PerfScore 46.00
+                       ;; size=118 bbWeight=1 PerfScore 36.00
 G_M50245_IG03:        ; bbWeight=1, extend
             str     r0, [r5]
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M50245_IG04:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 76
-            vpop    {d8-d9}
-            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+            add     sp, 44
+            pop     {r4,r5,r6,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 182, prolog size 14, PerfScore 56.00, instruction count 56, allocated bytes for code 182 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
+; Total bytes of code 140, prolog size 10, PerfScore 44.00, instruction count 44, allocated bytes for code 140 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -112,12 +96,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 91 (0x0005b) Actual length = 182 (0x0000b6)
+  Function Length   : 70 (0x00046) Actual length = 140 (0x00008c)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    13          add sp, sp, #76                     ; opsize 16
-    E1          vpop {d8,d9}                        ; opsize 32
-    DF          pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}  ; opsize 32
+    0B          add sp, sp, #44                     ; opsize 16
+    A8 70       pop {r4,r5,r6,r11,lr}               ; opsize 32
     FF          end
 

-48 (-22.43%) : 395819.dasm - (dynamicClass):ILSTUBCallTailCallTarget(int,byref,int) (FullOpts)

@@ -13,25 +13,22 @@
 ;* V03 loc0         [V03    ] (  0,  0   )     int  ->  zero-ref   
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (28) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct ( 4) zero-ref    "impAppendStmt" <ABIStress.S4P>
-;  V06 tmp2         [V06,T05] (  2,  4   )  struct (12) [sp+0x4C]  do-not-enreg[S] "impAppendStmt" <ABIStress.S11U>
-;  V07 tmp3         [V07,T06] (  2,  4   )  struct ( 8) [sp+0x44]  do-not-enreg[S] "impAppendStmt" <ABIStress.S5U>
+;  V06 tmp2         [V06,T01] (  4,  8   )  struct (12) [sp+0x3C]  do-not-enreg[SA] multireg-arg "impAppendStmt" <ABIStress.S11U>
+;  V07 tmp3         [V07,T05] (  2,  4   )  struct ( 8) [sp+0x34]  do-not-enreg[S] "impAppendStmt" <ABIStress.S5U>
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct ( 4) zero-ref    "impAppendStmt" <ABIStress.S2U>
-;  V09 tmp5         [V09,T07] (  2,  4   )     int  ->   lr         "impAppendStmt"
-;  V10 tmp6         [V10,T08] (  2,  4   )  struct (12) [sp+0x38]  do-not-enreg[S] "impAppendStmt" <ABIStress.S9U>
-;  V11 tmp7         [V11,T11] (  2,  2   )     int  ->   r1         "field V05.F0 (fldOffset=0x0)" P-INDEP
-;  V12 tmp8         [V12,T12] (  2,  2   )   ubyte  ->   r2         "field V08.F0 (fldOffset=0x0)" P-INDEP
-;  V13 tmp9         [V13,T13] (  2,  2   )   ubyte  ->   r3         "field V08.F1 (fldOffset=0x1)" P-INDEP
-;  V14 tmp10        [V14,T03] (  3,  6   )  struct ( 4) [sp+0x34]  do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-;  V15 tmp11        [V15,T09] (  2,  4   )     int  ->   r0         "argument with side effect"
-;  V16 tmp12        [V16,T01] (  4,  8   )  struct (12) [sp+0x28]  do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S11U>
-;  V17 tmp13        [V17,T10] (  2,  4   )  struct ( 8) [sp+0x20]  do-not-enreg[S] "argument with side effect" <ABIStress.S5U>
+;  V09 tmp5         [V09,T06] (  2,  4   )     int  ->   r3         "impAppendStmt"
+;  V10 tmp6         [V10,T07] (  2,  4   )  struct (12) [sp+0x28]  do-not-enreg[S] "impAppendStmt" <ABIStress.S9U>
+;  V11 tmp7         [V11,T08] (  2,  2   )     int  ->   lr         "field V05.F0 (fldOffset=0x0)" P-INDEP
+;  V12 tmp8         [V12,T09] (  2,  2   )   ubyte  ->   r1         "field V08.F0 (fldOffset=0x0)" P-INDEP
+;  V13 tmp9         [V13,T10] (  2,  2   )   ubyte  ->   r2         "field V08.F1 (fldOffset=0x1)" P-INDEP
+;  V14 tmp10        [V14,T03] (  3,  6   )  struct ( 4) [sp+0x24]  do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
 ;
-; Lcl frame size = 92
+; Lcl frame size = 76
 
 G_M50245_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r11,lr}
-            sub     sp, 92
-            add     r11, sp, 96
+            sub     sp, 76
+            add     r11, sp, 80
             mov     r4, r1
             ; byrRegs +[r4]
                        ;; size=12 bbWeight=1 PerfScore 4.00
@@ -41,74 +38,62 @@ G_M50245_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
             movw    r1, LOW ADDRESS G_M50245_IG03
             movt    r1, HIGH ADDRESS G_M50245_IG03
             str     r1, [r2]
-            ldr     r1, [r0+0x0C]
-            ldr     r2, [r0+0x10]
-            str     r2, [sp+0x4C]
-            ldr     r2, [r0+0x14]
-            str     r2, [sp+0x50]
-            ldrh    r2, [r0+0x18]
-            strh    r2, [sp+0x54]
-            ldrb    r2, [r0+0x1A]
-            strb    r2, [sp+0x56]
-            ldr     r2, [r0+0x1B]
-            str     r2, [sp+0x44]
-            ldrb    r2, [r0+0x1F]
-            strb    r2, [sp+0x48]
-            ldrb    r2, [r0+0x20]
-            ldrb    r3, [r0+0x21]
-            ldr     lr, [r0+0x24]
+            ldr     lr, [r0+0x0C]
+            ldr     r1, [r0+0x10]
+            str     r1, [sp+0x3C]
+            ldr     r1, [r0+0x14]
+            str     r1, [sp+0x40]
+            ldrh    r1, [r0+0x18]
+            strh    r1, [sp+0x44]
+            ldrb    r1, [r0+0x1A]
+            strb    r1, [sp+0x46]
+            ldr     r1, [r0+0x1B]
+            str     r1, [sp+0x34]
+            ldrb    r1, [r0+0x1F]
+            strb    r1, [sp+0x38]
+            ldrb    r1, [r0+0x20]
+            ldrb    r2, [r0+0x21]
+            ldr     r3, [r0+0x24]
             ldr     r12, [r0+0x28]
-            str     r12, [sp+0x38]
+            str     r12, [sp+0x28]
             ldr     r12, [r0+0x2C]
-            str     r12, [sp+0x3C]
+            str     r12, [sp+0x2C]
             ldrb    r12, [r0+0x30]
-            strb    r12, [sp+0x40]
+            strb    r12, [sp+0x30]
             mov     r12, 2
             str     r12, [r0]
-            mov     r0, r1
-            ldr     r1, [sp+0x4C]
-            str     r1, [sp+0x28]
-            ldr     r1, [sp+0x50]
-            str     r1, [sp+0x2C]
-            ldrh    r1, [sp+0x54]
-            strh    r1, [sp+0x30]
-            ldrb    r1, [sp+0x56]
-            strb    r1, [sp+0x32]
-            ldr     r1, [sp+0x44]
-            str     r1, [sp+0x20]
-            ldrb    r1, [sp+0x48]
+            ldr     r0, [sp+0x34]
+            str     r0, [sp]
+            ldr     r0, [sp+0x38]
+            str     r0, [sp+0x04]
             strb    r1, [sp+0x24]
-            strb    r2, [sp+0x34]
-            strb    r3, [sp+0x35]
-            str     lr, [sp+0x0C]
-            ldr     r1, [sp+0x38]
-            str     r1, [sp+0x10]
-            ldr     r1, [sp+0x3C]
-            str     r1, [sp+0x14]
-            ldr     r1, [sp+0x40]
-            str     r1, [sp+0x18]
+            strb    r2, [sp+0x25]
+            str     r3, [sp+0x0C]
             ldr     r1, [sp+0x28]
-            ldr     r2, [sp+0x2C]
-            ldr     r3, [sp+0x30]
-            ldr     lr, [sp+0x20]
-            str     lr, [sp]
-            ldr     lr, [sp+0x24]
-            str     lr, [sp+0x04]
-            ldrh    lr, [sp+0x34]
-            str     lr, [sp+0x08]
+            str     r1, [sp+0x10]
+            ldr     r1, [sp+0x2C]
+            str     r1, [sp+0x14]
+            ldr     r1, [sp+0x30]
+            str     r1, [sp+0x18]
+            ldrh    r1, [sp+0x24]
+            str     r1, [sp+0x08]
+            ldr     r1, [sp+0x3C]
+            ldr     r2, [sp+0x40]
+            ldr     r3, [sp+0x44]
+            mov     r0, lr
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             blx     lr     // <unknown method>
-                       ;; size=194 bbWeight=1 PerfScore 63.00
+                       ;; size=146 bbWeight=1 PerfScore 51.00
 G_M50245_IG03:        ; bbWeight=1, extend
             str     r0, [r4]
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M50245_IG04:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 92
+            add     sp, 76
             pop     {r4,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 214, prolog size 10, PerfScore 70.00, instruction count 70, allocated bytes for code 214 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
+; Total bytes of code 166, prolog size 10, PerfScore 58.00, instruction count 58, allocated bytes for code 166 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -120,11 +105,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 107 (0x0006b) Actual length = 214 (0x0000d6)
+  Function Length   : 83 (0x00053) Actual length = 166 (0x0000a6)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    17          add sp, sp, #92                     ; opsize 16
+    13          add sp, sp, #76                     ; opsize 16
     A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

+16 (+10.96%) : 378634.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)

@@ -8,33 +8,31 @@
 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T03] (  2,  4   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp3         [V05,T05] (  4,  3.50)     ref  ->   r1        
-;  V06 tmp4         [V06,T02] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-;  V07 tmp5         [V07,T07] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7         [V09,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
-;  V10 tmp8         [V10,T01] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9         [V11,T08] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V12 tmp10        [V12,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;  V13 cse0         [V13,T06] (  4,  3   )     int  ->   r5         "CSE - aggressive"
+;  V05 tmp3         [V05,T04] (  4,  3.50)     ref  ->   r1        
+;  V06 tmp4         [V06,T01] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+;  V07 tmp5         [V07,T05] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
+;  V10 tmp8         [V10,T00] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M22152_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M22152_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r5, 0xd1ff
-            movt    r5, 0xd1ff
-            ldr     r1, [r5]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            ldr     r1, [r0]
             ; gcrRegs +[r1]
             cmp     r1, 0
             bne     SHORT G_M22152_IG04
@@ -51,12 +49,14 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs +[r1]
             str     r1, [sp]
             ; GC ptr vars +{V06}
-            ldr     r3, [r5-0x2C]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movt    r0, 0xd1ff
+            ldr     r3, [r0]
             ; gcrRegs +[r3]
             cmp     r3, 0
             beq     SHORT G_M22152_IG07
             adds    r0, r1, 4
-            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             mov     r1, r3
             movw    r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r2, [sp]
             ; gcrRegs +[r2]
             str     r1, [r2+0x0C]
-            mov     r0, r5
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
             mov     r1, r2
             ; gcrRegs +[r1]
             movw    r12, 0xd1ff
@@ -78,18 +79,18 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=72 bbWeight=0.50 PerfScore 12.50
+                       ;; size=84 bbWeight=0.50 PerfScore 14.00
 G_M22152_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r2]
             ; GC ptr vars -{V06}
-            movs    r0, 0
-            strb    r0, [sp+0x04]
+            movs    r3, 0
+            strb    r3, [sp+0x04]
                        ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG05:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0x05]
+            strb    r3, [sp+0x05]
+            ldrh    r3, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldrh    r3, [sp+0x04]
             movs    r2, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -98,8 +99,9 @@ G_M22152_IG05:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1 r4]
                        ;; size=26 bbWeight=1 PerfScore 8.00
 G_M22152_IG06:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r0]
             movw    r3, 0xd1ff
@@ -109,7 +111,7 @@ G_M22152_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 146, prolog size 8, PerfScore 31.50, instruction count 49, allocated bytes for code 146 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 162, prolog size 10, PerfScore 35.00, instruction count 54, allocated bytes for code 162 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -121,7 +123,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 73 (0x00049) Actual length = 146 (0x000092)
+  Function Length   : 81 (0x00051) Actual length = 162 (0x0000a2)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +131,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

+44 (+12.87%) : 406809.dasm - Test10w5d.testout1:Func0():int (FullOpts)

@@ -8,14 +8,14 @@
 ; 0 inlinees with PGO data; 12 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 loc0         [V00,T12] (  2,  2   )   float  ->  [sp+0x2C]  spill-single-def
-;  V01 loc1         [V01,T13] (  2,  2   )  double  ->  [sp+0x20]  spill-single-def
-;  V02 loc2         [V02,T14] (  2,  2   )  double  ->  [sp+0x18]  spill-single-def
-;  V03 loc3         [V03,T15] (  2,  2   )   float  ->  [sp+0x14]  spill-single-def
-;  V04 loc4         [V04,T16] (  2,  2   )   float  ->  [sp+0x10]  spill-single-def
-;  V05 loc5         [V05    ] (  1,  1   )    long  ->  [sp+0x08]  multireg-ret single-def
-;  V06 loc6         [V06,T17] (  2,  2   )   float  ->  f16         single-def
-;  V07 loc7         [V07,T18] (  2,  2   )   float  ->  f17         single-def
+;  V00 loc0         [V00,T12] (  2,  2   )   float  ->  [sp+0x3C]  spill-single-def
+;  V01 loc1         [V01,T00] (  4,  4   )  double  ->  f16:f17     single-def
+;  V02 loc2         [V02,T13] (  2,  2   )  double  ->  [sp+0x30]  spill-single-def
+;  V03 loc3         [V03,T14] (  2,  2   )   float  ->  [sp+0x2C]  spill-single-def
+;  V04 loc4         [V04,T15] (  2,  2   )   float  ->  [sp+0x28]  spill-single-def
+;  V05 loc5         [V05    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret single-def
+;  V06 loc6         [V06,T16] (  2,  2   )   float  ->  f18         single-def
+;  V07 loc7         [V07,T05] (  3,  3   )   float  ->  f19         single-def
 ;* V08 loc8         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )   float  ->  zero-ref    "impAppendStmt"
@@ -27,58 +27,57 @@
 ;* V16 tmp7         [V16    ] (  0,  0   )  double  ->  zero-ref    "Inlining Arg"
 ;* V17 tmp8         [V17    ] (  0,  0   )   float  ->  zero-ref    "Inlining Arg"
 ;* V18 tmp9         [V18    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V19 tmp10        [V19,T01] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
-;  V20 tmp11        [V20,T02] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
-;  V21 tmp12        [V21,T03] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
-;  V22 cse0         [V22,T04] (  3,  3   )   float  ->  f17         "CSE - aggressive"
-;  V23 cse1         [V23,T05] (  3,  3   )   float  ->  f20         "CSE - aggressive"
-;  V24 cse2         [V24,T00] (  4,  4   )  double  ->  f18:f19     "CSE - aggressive"
-;  V25 rat0         [V25,T19] (  2,  2   )     int  ->   r0         "field V05.lo (fldOffset=0x0)" P-INDEP
-;  V26 rat1         [V26,T20] (  2,  2   )     int  ->   r1         "field V05.hi (fldOffset=0x4)" P-INDEP
-;  V27 rat2         [V27    ] (  1,  2   )    long  ->  [sp+0x00]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V28 rat3         [V28,T06] (  2,  3   )     int  ->   r0         "field V27.lo (fldOffset=0x0)" P-INDEP
-;  V29 rat4         [V29,T07] (  2,  3   )     int  ->   r1         "field V27.hi (fldOffset=0x4)" P-INDEP
-;* V30 rat5         [V30    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[BR] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;* V31 rat6         [V31,T08] (  0,  0   )     int  ->  zero-ref    "field V30.lo (fldOffset=0x0)" P-DEP
-;* V32 rat7         [V32,T09] (  0,  0   )     int  ->  zero-ref    "field V30.hi (fldOffset=0x4)" P-DEP
-;* V33 rat8         [V33    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[BR] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;* V34 rat9         [V34,T10] (  0,  0   )     int  ->  zero-ref    "field V33.lo (fldOffset=0x0)" P-DEP
-;* V35 rat10        [V35,T11] (  0,  0   )     int  ->  zero-ref    "field V33.hi (fldOffset=0x4)" P-DEP
+;  V19 tmp10        [V19,T02] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
+;  V20 tmp11        [V20,T03] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
+;  V21 tmp12        [V21,T04] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
+;  V22 cse0         [V22,T01] (  4,  4   )  double  ->  f20:f21     "CSE - aggressive"
+;  V23 rat0         [V23,T17] (  2,  2   )     int  ->   r0         "field V05.lo (fldOffset=0x0)" P-INDEP
+;  V24 rat1         [V24,T18] (  2,  2   )     int  ->   r1         "field V05.hi (fldOffset=0x4)" P-INDEP
+;  V25 rat2         [V25    ] (  1,  2   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V26 rat3         [V26,T06] (  2,  3   )     int  ->   r0         "field V25.lo (fldOffset=0x0)" P-INDEP
+;  V27 rat4         [V27,T07] (  2,  3   )     int  ->   r1         "field V25.hi (fldOffset=0x4)" P-INDEP
+;  V28 rat5         [V28    ] (  1,  2   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V29 rat6         [V29,T08] (  2,  3   )     int  ->   r0         "field V28.lo (fldOffset=0x0)" P-INDEP
+;  V30 rat7         [V30,T09] (  2,  3   )     int  ->   r1         "field V28.hi (fldOffset=0x4)" P-INDEP
+;  V31 rat8         [V31    ] (  1,  2   )    long  ->  [sp+0x08]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V32 rat9         [V32,T10] (  2,  3   )     int  ->   r0         "field V31.lo (fldOffset=0x0)" P-INDEP
+;  V33 rat10        [V33,T11] (  2,  3   )     int  ->   r1         "field V31.hi (fldOffset=0x4)" P-INDEP
+;  TEMP_01                                   float  ->  [r11-0x54]
 ;
-; Lcl frame size = 48
+; Lcl frame size = 64
 
 G_M41296_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r11,lr}
             vpush   {d8-d10}
-            sub     sp, 48
-            add     r11, sp, 72
+            sub     sp, 64
+            add     r11, sp, 88
                        ;; size=14 bbWeight=1 PerfScore 4.00
 G_M41296_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // Test_10w5d.testout1:Func_0_6():float
-            vstr    s0, [sp+0x2C]  // [V00 loc0]
+            vstr    s0, [sp+0x3C]  // [V00 loc0]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // <unknown method>
-            vstr    d0, [sp+0x20]  // [V01 loc1]
+            vmov    d8, d0
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // Test_10w5d.testout1:Func_0_4():double
-            vstr    d0, [sp+0x18]  // [V02 loc2]
+            vstr    d0, [sp+0x30]  // [V02 loc2]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // Test_10w5d.testout1:Func_0_3():float
-            vstr    s0, [sp+0x14]  // [V03 loc3]
+            vstr    s0, [sp+0x2C]  // [V03 loc3]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // Test_10w5d.testout1:Func_0_2():float
-            vstr    s0, [sp+0x10]  // [V04 loc4]
+            vstr    s0, [sp+0x28]  // [V04 loc4]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
@@ -86,24 +85,24 @@ G_M41296_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             vmov.i2f s8, r3
-            vldr    s0, [sp+0x14]  // [V03 loc3]
+            vldr    s0, [sp+0x2C]  // [V03 loc3]
             vsub    s8, s0, s8
             mov     r3, 0x43000000
             vmov.i2f s9, r3
-            vldr    s0, [sp+0x2C]  // [V00 loc0]
+            vldr    s0, [sp+0x3C]  // [V00 loc0]
             vadd    s9, s0, s9
-            vsub    s16, s8, s9
+            vsub    s18, s8, s9
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             vmov.i2f s8, r3
-            vldr    s0, [sp+0x10]  // [V04 loc4]
-            vsub    s17, s0, s8
+            vldr    s0, [sp+0x28]  // [V04 loc4]
+            vsub    s19, s0, s8
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_LNG2DBL
-            vldr    d4, [sp+0x18]  // [V02 loc2]
-            vmul    d9, d0, d4
-            vmov    d0, d9
+            vldr    d4, [sp+0x30]  // [V02 loc2]
+            vmul    d10, d0, d4
+            vmov    d0, d10
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBLROUND
@@ -113,21 +112,27 @@ G_M41296_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_LNG2DBL
-            vldr    d4, [sp+0x20]  // [V01 loc1]
-            vdiv    d0, d0, d4
-            vcvt.d2f s20, d0
-            vmov    d0, d9
+            vdiv    d0, d0, d8
+            vcvt.d2f s8, d0
+            vstr    s8, [sp+0x04]  // [TEMP_01]
+            vmov    d0, d10
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBLROUND
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBL2LNG_OVF
-            vadd    s17, s20, s17
-            vcmp    s20, s17
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_LNG2DBL
+            vdiv    d4, d0, d8
+            vcvt.d2f s8, d4
+            vadd    s8, s8, s19
+            vldr    s9, [sp+0x04]  // [TEMP_01]
+            vcmp    s9, s8
             vmrs    APSR, FPSCR
             ble     SHORT G_M41296_IG04
-                       ;; size=254 bbWeight=1 PerfScore 73.00
+                       ;; size=276 bbWeight=1 PerfScore 79.00
 G_M41296_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
@@ -137,27 +142,33 @@ G_M41296_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             blx     r3     // <unknown method>
                        ;; size=20 bbWeight=0.50 PerfScore 3.00
 G_M41296_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            vmov    d0, d9
+            vmov    d0, d10
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBLROUND
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBL2LNG_OVF
-            vadd    s0, s17, s16
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_LNG2DBL
+            vdiv    d0, d0, d8
+            vcvt.d2f s0, d0
+            vadd    s0, s0, s19
+            vadd    s0, s0, s18
             vcvt.f2d d0, s0
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // <unknown method>
-                       ;; size=44 bbWeight=1 PerfScore 13.00
+                       ;; size=66 bbWeight=1 PerfScore 19.00
 G_M41296_IG05:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 48
+            add     sp, 64
             vpop    {d8-d10}
             pop     {r11,pc}
                        ;; size=10 bbWeight=1 PerfScore 3.00
 
-; Total bytes of code 342, prolog size 14, PerfScore 96.00, instruction count 99, allocated bytes for code 342 (MethodHash=f2de5eaf) for method Test_10w5d.testout1:Func_0():int (FullOpts)
+; Total bytes of code 386, prolog size 14, PerfScore 108.00, instruction count 111, allocated bytes for code 386 (MethodHash=f2de5eaf) for method Test_10w5d.testout1:Func_0():int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -169,11 +180,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 171 (0x000ab) Actual length = 342 (0x000156)
+  Function Length   : 193 (0x000c1) Actual length = 386 (0x000182)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    0C          add sp, sp, #48                     ; opsize 16
+    10          add sp, sp, #64                     ; opsize 16
     E2          vpop {d8,d9,d10}                    ; opsize 32
     A8 00       pop {r11,lr}                        ; opsize 32
     FF          end

+44 (+13.02%) : 413230.dasm - Test10w5d.testout1:Func0():int (FullOpts)

@@ -8,15 +8,15 @@
 ; 0 inlinees with PGO data; 12 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 loc0         [V00,T13] (  2,  2   )   float  ->  [sp+0x2C]  spill-single-def
-;  V01 loc1         [V01,T14] (  2,  2   )  double  ->  [sp+0x20]  spill-single-def
-;  V02 loc2         [V02,T15] (  2,  2   )  double  ->  [sp+0x18]  spill-single-def
-;  V03 loc3         [V03,T16] (  2,  2   )   float  ->  [sp+0x14]  spill-single-def
-;  V04 loc4         [V04    ] (  1,  1   )    long  ->  [sp+0x08]  multireg-ret single-def
-;  V05 loc5         [V05,T17] (  2,  2   )   float  ->  f16         single-def
-;  V06 loc6         [V06,T18] (  2,  2   )   float  ->  f17         single-def
+;  V00 loc0         [V00,T13] (  2,  2   )   float  ->  [sp+0x3C]  spill-single-def
+;  V01 loc1         [V01,T00] (  4,  4   )  double  ->  f16:f17     single-def
+;  V02 loc2         [V02,T14] (  2,  2   )  double  ->  [sp+0x30]  spill-single-def
+;  V03 loc3         [V03,T15] (  2,  2   )   float  ->  [sp+0x2C]  spill-single-def
+;  V04 loc4         [V04    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret single-def
+;  V05 loc5         [V05,T16] (  2,  2   )   float  ->  f18         single-def
+;  V06 loc6         [V06,T06] (  3,  3   )   float  ->  f19         single-def
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V08 tmp1         [V08,T01] (  2,  4   )   float  ->  f16         "impAppendStmt"
+;  V08 tmp1         [V08,T02] (  2,  4   )   float  ->  f18         "impAppendStmt"
 ;* V09 tmp2         [V09    ] (  0,  0   )   float  ->  zero-ref    "impAppendStmt"
 ;* V10 tmp3         [V10    ] (  0,  0   )  double  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp4         [V11    ] (  0,  0   )  double  ->  zero-ref    "Inlining Arg"
@@ -26,58 +26,57 @@
 ;* V15 tmp8         [V15    ] (  0,  0   )  double  ->  zero-ref    "Inlining Arg"
 ;* V16 tmp9         [V16    ] (  0,  0   )   float  ->  zero-ref    "Inlining Arg"
 ;* V17 tmp10        [V17    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V18 tmp11        [V18,T02] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
-;  V19 tmp12        [V19,T03] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
-;  V20 tmp13        [V20,T04] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
-;  V21 cse0         [V21,T05] (  3,  3   )   float  ->  f17         "CSE - aggressive"
-;  V22 cse1         [V22,T06] (  3,  3   )   float  ->  f20         "CSE - aggressive"
-;  V23 cse2         [V23,T00] (  4,  4   )  double  ->  f18:f19     "CSE - aggressive"
-;  V24 rat0         [V24,T19] (  2,  2   )     int  ->   r0         "field V04.lo (fldOffset=0x0)" P-INDEP
-;  V25 rat1         [V25,T20] (  2,  2   )     int  ->   r1         "field V04.hi (fldOffset=0x4)" P-INDEP
-;  V26 rat2         [V26    ] (  1,  2   )    long  ->  [sp+0x00]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V27 rat3         [V27,T07] (  2,  3   )     int  ->   r0         "field V26.lo (fldOffset=0x0)" P-INDEP
-;  V28 rat4         [V28,T08] (  2,  3   )     int  ->   r1         "field V26.hi (fldOffset=0x4)" P-INDEP
-;* V29 rat5         [V29    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[BR] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;* V30 rat6         [V30,T09] (  0,  0   )     int  ->  zero-ref    "field V29.lo (fldOffset=0x0)" P-DEP
-;* V31 rat7         [V31,T10] (  0,  0   )     int  ->  zero-ref    "field V29.hi (fldOffset=0x4)" P-DEP
-;* V32 rat8         [V32    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[BR] multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;* V33 rat9         [V33,T11] (  0,  0   )     int  ->  zero-ref    "field V32.lo (fldOffset=0x0)" P-DEP
-;* V34 rat10        [V34,T12] (  0,  0   )     int  ->  zero-ref    "field V32.hi (fldOffset=0x4)" P-DEP
+;  V18 tmp11        [V18,T03] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
+;  V19 tmp12        [V19,T04] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
+;  V20 tmp13        [V20,T05] (  2,  4   )  double  ->   f0:f1      "argument with side effect"
+;  V21 cse0         [V21,T01] (  4,  4   )  double  ->  f20:f21     "CSE - aggressive"
+;  V22 rat0         [V22,T17] (  2,  2   )     int  ->   r0         "field V04.lo (fldOffset=0x0)" P-INDEP
+;  V23 rat1         [V23,T18] (  2,  2   )     int  ->   r1         "field V04.hi (fldOffset=0x4)" P-INDEP
+;  V24 rat2         [V24    ] (  1,  2   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V25 rat3         [V25,T07] (  2,  3   )     int  ->   r0         "field V24.lo (fldOffset=0x0)" P-INDEP
+;  V26 rat4         [V26,T08] (  2,  3   )     int  ->   r1         "field V24.hi (fldOffset=0x4)" P-INDEP
+;  V27 rat5         [V27    ] (  1,  2   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V28 rat6         [V28,T09] (  2,  3   )     int  ->   r0         "field V27.lo (fldOffset=0x0)" P-INDEP
+;  V29 rat7         [V29,T10] (  2,  3   )     int  ->   r1         "field V27.hi (fldOffset=0x4)" P-INDEP
+;  V30 rat8         [V30    ] (  1,  2   )    long  ->  [sp+0x08]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V31 rat9         [V31,T11] (  2,  3   )     int  ->   r0         "field V30.lo (fldOffset=0x0)" P-INDEP
+;  V32 rat10        [V32,T12] (  2,  3   )     int  ->   r1         "field V30.hi (fldOffset=0x4)" P-INDEP
+;  TEMP_01                                   float  ->  [r11-0x54]
 ;
-; Lcl frame size = 48
+; Lcl frame size = 64
 
 G_M41296_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r11,lr}
             vpush   {d8-d10}
-            sub     sp, 48
-            add     r11, sp, 72
+            sub     sp, 64
+            add     r11, sp, 88
                        ;; size=14 bbWeight=1 PerfScore 4.00
 G_M41296_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // Test_10w5d.testout1:Func_0_6():float
-            vstr    s0, [sp+0x2C]  // [V00 loc0]
+            vstr    s0, [sp+0x3C]  // [V00 loc0]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // <unknown method>
-            vstr    d0, [sp+0x20]  // [V01 loc1]
+            vmov    d8, d0
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // Test_10w5d.testout1:Func_0_4():double
-            vstr    d0, [sp+0x18]  // [V02 loc2]
+            vstr    d0, [sp+0x30]  // [V02 loc2]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // Test_10w5d.testout1:Func_0_3():float
-            vmov    s16, s0
+            vmov    s18, s0
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // Test_10w5d.testout1:Func_0_2():float
-            vstr    s0, [sp+0x14]  // [V03 loc3]
+            vstr    s0, [sp+0x2C]  // [V03 loc3]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
@@ -85,23 +84,23 @@ G_M41296_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             vmov.i2f s8, r3
-            vsub    s8, s16, s8
+            vsub    s8, s18, s8
             mov     r3, 0x43000000
             vmov.i2f s9, r3
-            vldr    s0, [sp+0x2C]  // [V00 loc0]
+            vldr    s0, [sp+0x3C]  // [V00 loc0]
             vadd    s9, s0, s9
-            vsub    s16, s8, s9
+            vsub    s18, s8, s9
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             vmov.i2f s8, r3
-            vldr    s0, [sp+0x14]  // [V03 loc3]
-            vsub    s17, s0, s8
+            vldr    s0, [sp+0x2C]  // [V03 loc3]
+            vsub    s19, s0, s8
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_LNG2DBL
-            vldr    d4, [sp+0x18]  // [V02 loc2]
-            vmul    d9, d0, d4
-            vmov    d0, d9
+            vldr    d4, [sp+0x30]  // [V02 loc2]
+            vmul    d10, d0, d4
+            vmov    d0, d10
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBLROUND
@@ -111,21 +110,27 @@ G_M41296_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_LNG2DBL
-            vldr    d4, [sp+0x20]  // [V01 loc1]
-            vdiv    d0, d0, d4
-            vcvt.d2f s20, d0
-            vmov    d0, d9
+            vdiv    d0, d0, d8
+            vcvt.d2f s8, d0
+            vstr    s8, [sp+0x04]  // [TEMP_01]
+            vmov    d0, d10
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBLROUND
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBL2LNG_OVF
-            vadd    s17, s20, s17
-            vcmp    s20, s17
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_LNG2DBL
+            vdiv    d4, d0, d8
+            vcvt.d2f s8, d4
+            vadd    s8, s8, s19
+            vldr    s9, [sp+0x04]  // [TEMP_01]
+            vcmp    s9, s8
             vmrs    APSR, FPSCR
             ble     SHORT G_M41296_IG04
-                       ;; size=250 bbWeight=1 PerfScore 72.00
+                       ;; size=272 bbWeight=1 PerfScore 78.00
 G_M41296_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
@@ -135,27 +140,33 @@ G_M41296_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             blx     r3     // <unknown method>
                        ;; size=20 bbWeight=0.50 PerfScore 3.00
 G_M41296_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            vmov    d0, d9
+            vmov    d0, d10
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBLROUND
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBL2LNG_OVF
-            vadd    s0, s17, s16
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_LNG2DBL
+            vdiv    d0, d0, d8
+            vcvt.d2f s0, d0
+            vadd    s0, s0, s19
+            vadd    s0, s0, s18
             vcvt.f2d d0, s0
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // <unknown method>
-                       ;; size=44 bbWeight=1 PerfScore 13.00
+                       ;; size=66 bbWeight=1 PerfScore 19.00
 G_M41296_IG05:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 48
+            add     sp, 64
             vpop    {d8-d10}
             pop     {r11,pc}
                        ;; size=10 bbWeight=1 PerfScore 3.00
 
-; Total bytes of code 338, prolog size 14, PerfScore 95.00, instruction count 98, allocated bytes for code 338 (MethodHash=f2de5eaf) for method Test_10w5d.testout1:Func_0():int (FullOpts)
+; Total bytes of code 382, prolog size 14, PerfScore 107.00, instruction count 110, allocated bytes for code 382 (MethodHash=f2de5eaf) for method Test_10w5d.testout1:Func_0():int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -167,11 +178,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 169 (0x000a9) Actual length = 338 (0x000152)
+  Function Length   : 191 (0x000bf) Actual length = 382 (0x00017e)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    0C          add sp, sp, #48                     ; opsize 16
+    10          add sp, sp, #64                     ; opsize 16
     E2          vpop {d8,d9,d10}                    ; opsize 32
     A8 00       pop {r11,lr}                        ; opsize 32
     FF          end

libraries.crossgen2.linux.arm.checked.mch

-22 (-26.83%) : 160244.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Guid]):System.Text.Json.Nodes.JsonNode (FullOpts)

@@ -8,47 +8,34 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  3,  3   )  struct (20) [sp+0x28]  do-not-enreg[S] single-def <System.Nullable`1[System.Guid]>
+;  V00 arg0         [V00,T01] (  3,  3   )  struct (20) [sp+0x18]  do-not-enreg[S] single-def <System.Nullable`1[System.Guid]>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;  V02 OutArgs      [V02    ] (  1,  1   )  struct ( 8) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2         [V04,T04] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
-;  V05 tmp3         [V05,T00] (  3,  6   )  struct ( 4) [sp+0x1C]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-;  V06 tmp4         [V06,T02] (  2,  4   )  struct (20) [sp+0x08]  do-not-enreg[S] "argument with side effect" <System.Nullable`1[System.Guid]>
+;* V03 tmp1         [V03,T02] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2         [V04,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
+;  V05 tmp3         [V05,T00] (  3,  6   )  struct ( 4) [sp+0x0C]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;
-; Lcl frame size = 32
+; Lcl frame size = 16
 
 G_M50413_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r0,r1,r2,r3}
             push    {r4,lr}
-            sub     sp, 32
+            sub     sp, 16
                        ;; size=6 bbWeight=1 PerfScore 3.00
 G_M50413_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            add     r0, sp, 8
-            ; byrRegs +[r0]
-            add     r1, sp, 40
-            ; byrRegs +[r1]
-            movs    r2, 20
-            movw    r12, LOW RELOC 0xD1FFAB1E
-            movt    r12, HIGH RELOC 0xD1FFAB1E
-            add     r12, pc
-            ldr     r12, [r12]
-            blx     r12        // CORINFO_HELP_MEMCPY
-            ; byrRegs -[r0-r1]
-            ; gcr arg pop 0
             movs    r3, 0
-            strb    r3, [sp+0x1C]
-                       ;; size=28 bbWeight=1 PerfScore 10.00
+            strb    r3, [sp+0x0C]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M50413_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            strb    r3, [sp+0x1D]
-            ldrh    r3, [sp+0x1C]
+            strb    r3, [sp+0x0D]
+            ldrh    r3, [sp+0x0C]
             str     r3, [sp+0x04]
-            ldr     r0, [sp+0x18]
+            ldr     r0, [sp+0x28]
             str     r0, [sp]
-            ldr     r0, [sp+0x08]
-            ldr     r1, [sp+0x0C]
-            ldr     r2, [sp+0x10]
-            ldr     r3, [sp+0x14]
+            ldr     r0, [sp+0x18]
+            ldr     r1, [sp+0x1C]
+            ldr     r2, [sp+0x20]
+            ldr     r3, [sp+0x24]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -58,13 +45,13 @@ G_M50413_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcr arg pop 0
                        ;; size=38 bbWeight=1 PerfScore 14.00
 G_M50413_IG04:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 32
+            add     sp, 16
             pop     {r4,lr}
             add     sp, 16
             bx      lr
                        ;; size=10 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 82, prolog size 6, PerfScore 31.00, instruction count 31, allocated bytes for code 82 (MethodHash=80603b12) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Guid]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 60, prolog size 6, PerfScore 23.00, instruction count 23, allocated bytes for code 60 (MethodHash=80603b12) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Guid]):System.Text.Json.Nodes.JsonNode (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -76,19 +63,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 41 (0x00029) Actual length = 82 (0x000052)
+  Function Length   : 30 (0x0001e) Actual length = 60 (0x00003c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 5 (0x05)
   ---- Unwind codes ----
-    08          add sp, sp, #32                     ; opsize 16
+    04          add sp, sp, #16                     ; opsize 16
     D4          pop {r4,lr}                         ; opsize 16
     EC 0F       pop {r0,r1,r2,r3}                   ; opsize 16
     FF          end
     ---- Epilog start at index 5 ----
-    08          add sp, sp, #32                     ; opsize 16
+    04          add sp, sp, #16                     ; opsize 16
     A0 10       pop {r4,lr}                         ; opsize 32
     04          add sp, sp, #16                     ; opsize 16
     FD          end + nop                           ; opsize 16

-22 (-25.58%) : 160238.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTimeOffset]):System.Text.Json.Nodes.JsonNode (FullOpts)

@@ -8,49 +8,36 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  3,  3   )  struct (24) [sp+0x38]  do-not-enreg[S] single-def double-align <System.Nullable`1[System.DateTimeOffset]>
+;  V00 arg0         [V00,T01] (  3,  3   )  struct (24) [sp+0x20]  do-not-enreg[S] single-def double-align <System.Nullable`1[System.DateTimeOffset]>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;  V02 OutArgs      [V02    ] (  1,  1   )  struct (12) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2         [V04,T04] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
-;  V05 tmp3         [V05,T00] (  3,  6   )  struct ( 4) [sp+0x2C]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-;  V06 tmp4         [V06,T02] (  2,  4   )  struct (24) [sp+0x10]  do-not-enreg[S] double-align "argument with side effect" <System.Nullable`1[System.DateTimeOffset]>
+;* V03 tmp1         [V03,T02] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2         [V04,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
+;  V05 tmp3         [V05,T00] (  3,  6   )  struct ( 4) [sp+0x14]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;
-; Lcl frame size = 48
+; Lcl frame size = 24
 
 G_M32158_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r0,r1,r2,r3}
             push    {r4,lr}
-            sub     sp, 48
+            sub     sp, 24
                        ;; size=6 bbWeight=1 PerfScore 3.00
 G_M32158_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            add     r0, sp, 16
-            ; byrRegs +[r0]
-            add     r1, sp, 56
-            ; byrRegs +[r1]
-            movs    r2, 24
-            movw    r12, LOW RELOC 0xD1FFAB1E
-            movt    r12, HIGH RELOC 0xD1FFAB1E
-            add     r12, pc
-            ldr     r12, [r12]
-            blx     r12        // CORINFO_HELP_MEMCPY
-            ; byrRegs -[r0-r1]
-            ; gcr arg pop 0
             movs    r3, 0
-            strb    r3, [sp+0x2C]
-                       ;; size=28 bbWeight=1 PerfScore 10.00
+            strb    r3, [sp+0x14]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M32158_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            strb    r3, [sp+0x2D]
-            ldrh    r3, [sp+0x2C]
+            strb    r3, [sp+0x15]
+            ldrh    r3, [sp+0x14]
             str     r3, [sp+0x08]
-            ldr     r0, [sp+0x20]
+            ldr     r0, [sp+0x30]
             str     r0, [sp]
-            ldr     r0, [sp+0x24]
+            ldr     r0, [sp+0x34]
             str     r0, [sp+0x04]
-            ldr     r0, [sp+0x10]
-            ldr     r1, [sp+0x14]
-            ldr     r2, [sp+0x18]
-            ldr     r3, [sp+0x1C]
+            ldr     r0, [sp+0x20]
+            ldr     r1, [sp+0x24]
+            ldr     r2, [sp+0x28]
+            ldr     r3, [sp+0x2C]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -60,13 +47,13 @@ G_M32158_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcr arg pop 0
                        ;; size=42 bbWeight=1 PerfScore 16.00
 G_M32158_IG04:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 48
+            add     sp, 24
             pop     {r4,lr}
             add     sp, 16
             bx      lr
                        ;; size=10 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 86, prolog size 6, PerfScore 33.00, instruction count 33, allocated bytes for code 86 (MethodHash=04148261) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTimeOffset]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 64, prolog size 6, PerfScore 25.00, instruction count 25, allocated bytes for code 64 (MethodHash=04148261) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTimeOffset]):System.Text.Json.Nodes.JsonNode (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -78,19 +65,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 43 (0x0002b) Actual length = 86 (0x000056)
+  Function Length   : 32 (0x00020) Actual length = 64 (0x000040)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 5 (0x05)
   ---- Unwind codes ----
-    0C          add sp, sp, #48                     ; opsize 16
+    06          add sp, sp, #24                     ; opsize 16
     D4          pop {r4,lr}                         ; opsize 16
     EC 0F       pop {r0,r1,r2,r3}                   ; opsize 16
     FF          end
     ---- Epilog start at index 5 ----
-    0C          add sp, sp, #48                     ; opsize 16
+    06          add sp, sp, #24                     ; opsize 16
     A0 10       pop {r4,lr}                         ; opsize 32
     04          add sp, sp, #16                     ; opsize 16
     FD          end + nop                           ; opsize 16

-22 (-25.58%) : 160240.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Decimal]):System.Text.Json.Nodes.JsonNode (FullOpts)

@@ -8,49 +8,36 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  3,  3   )  struct (24) [sp+0x38]  do-not-enreg[S] single-def double-align <System.Nullable`1[System.Decimal]>
+;  V00 arg0         [V00,T01] (  3,  3   )  struct (24) [sp+0x20]  do-not-enreg[S] single-def double-align <System.Nullable`1[System.Decimal]>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;  V02 OutArgs      [V02    ] (  1,  1   )  struct (12) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2         [V04,T04] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
-;  V05 tmp3         [V05,T00] (  3,  6   )  struct ( 4) [sp+0x2C]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-;  V06 tmp4         [V06,T02] (  2,  4   )  struct (24) [sp+0x10]  do-not-enreg[S] double-align "argument with side effect" <System.Nullable`1[System.Decimal]>
+;* V03 tmp1         [V03,T02] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2         [V04,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
+;  V05 tmp3         [V05,T00] (  3,  6   )  struct ( 4) [sp+0x14]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;
-; Lcl frame size = 48
+; Lcl frame size = 24
 
 G_M12601_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r0,r1,r2,r3}
             push    {r4,lr}
-            sub     sp, 48
+            sub     sp, 24
                        ;; size=6 bbWeight=1 PerfScore 3.00
 G_M12601_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            add     r0, sp, 16
-            ; byrRegs +[r0]
-            add     r1, sp, 56
-            ; byrRegs +[r1]
-            movs    r2, 24
-            movw    r12, LOW RELOC 0xD1FFAB1E
-            movt    r12, HIGH RELOC 0xD1FFAB1E
-            add     r12, pc
-            ldr     r12, [r12]
-            blx     r12        // CORINFO_HELP_MEMCPY
-            ; byrRegs -[r0-r1]
-            ; gcr arg pop 0
             movs    r3, 0
-            strb    r3, [sp+0x2C]
-                       ;; size=28 bbWeight=1 PerfScore 10.00
+            strb    r3, [sp+0x14]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M12601_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            strb    r3, [sp+0x2D]
-            ldrh    r3, [sp+0x2C]
+            strb    r3, [sp+0x15]
+            ldrh    r3, [sp+0x14]
             str     r3, [sp+0x08]
-            ldr     r0, [sp+0x20]
+            ldr     r0, [sp+0x30]
             str     r0, [sp]
-            ldr     r0, [sp+0x24]
+            ldr     r0, [sp+0x34]
             str     r0, [sp+0x04]
-            ldr     r0, [sp+0x10]
-            ldr     r1, [sp+0x14]
-            ldr     r2, [sp+0x18]
-            ldr     r3, [sp+0x1C]
+            ldr     r0, [sp+0x20]
+            ldr     r1, [sp+0x24]
+            ldr     r2, [sp+0x28]
+            ldr     r3, [sp+0x2C]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -60,13 +47,13 @@ G_M12601_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcr arg pop 0
                        ;; size=42 bbWeight=1 PerfScore 16.00
 G_M12601_IG04:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 48
+            add     sp, 24
             pop     {r4,lr}
             add     sp, 16
             bx      lr
                        ;; size=10 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 86, prolog size 6, PerfScore 33.00, instruction count 33, allocated bytes for code 86 (MethodHash=ac7acec6) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Decimal]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 64, prolog size 6, PerfScore 25.00, instruction count 25, allocated bytes for code 64 (MethodHash=ac7acec6) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Decimal]):System.Text.Json.Nodes.JsonNode (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -78,19 +65,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 43 (0x0002b) Actual length = 86 (0x000056)
+  Function Length   : 32 (0x00020) Actual length = 64 (0x000040)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 5 (0x05)
   ---- Unwind codes ----
-    0C          add sp, sp, #48                     ; opsize 16
+    06          add sp, sp, #24                     ; opsize 16
     D4          pop {r4,lr}                         ; opsize 16
     EC 0F       pop {r0,r1,r2,r3}                   ; opsize 16
     FF          end
     ---- Epilog start at index 5 ----
-    0C          add sp, sp, #48                     ; opsize 16
+    06          add sp, sp, #24                     ; opsize 16
     A0 10       pop {r4,lr}                         ; opsize 32
     04          add sp, sp, #16                     ; opsize 16
     FD          end + nop                           ; opsize 16

+4 (+3.12%) : 134448.dasm - System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)

@@ -15,13 +15,11 @@
 ;* V04 loc4         [V04    ] (  0,  0   )     int  ->  zero-ref   
 ;  V05 loc5         [V05    ] (  3,  3   )   byref  ->  [sp+0x04]  must-init pinned
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07,T01] (  2,  4   )     int  ->   r2         "Cast away GC"
-;  V08 tmp2         [V08,T02] (  2,  4   )     int  ->   r1         "Cast away GC"
+;  V07 tmp1         [V07,T01] (  2,  4   )     int  ->   r1         "Cast away GC"
+;  V08 tmp2         [V08,T02] (  2,  4   )     int  ->   r3         "Cast away GC"
 ;  V09 tmp3         [V09,T03] (  2,  4   )     int  ->   r2         "Cast away GC"
 ;  V10 tmp4         [V10,T04] (  2,  4   )     int  ->   r2         "argument with side effect"
-;  V11 tmp5         [V11,T05] (  2,  4   )     int  ->   r0         "argument with side effect"
-;  V12 tmp6         [V12,T06] (  2,  4   )     int  ->   r1         "argument with side effect"
-;  V13 cse0         [V13,T00] (  4,  4   )   byref  ->   r0         "CSE - aggressive"
+;  V11 cse0         [V11,T00] (  4,  4   )   byref  ->   r0         "CSE - aggressive"
 ;
 ; Lcl frame size = 20
 
@@ -44,26 +42,30 @@ G_M57672_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             add     r2, r0, 164
             ; byrRegs +[r2]
             str     r2, [sp+0x0C]  // [V01 loc1]
-            ldr     r2, [sp+0x0C]  // [V01 loc1]
-            add     r1, r0, 168
+            ldr     r1, [sp+0x0C]  // [V01 loc1]
             ; byrRegs +[r1]
-            str     r1, [sp+0x08]  // [V03 loc3]
-            ldr     r1, [sp+0x08]  // [V03 loc3]
-            adds    r0, 172
-            str     r0, [sp+0x04]  // [V05 loc5]
-            mov     r0, r2
-            ; byrRegs -[r0]
+            add     r2, r0, 168
+            str     r2, [sp+0x08]  // [V03 loc3]
+            ldr     r3, [sp+0x08]  // [V03 loc3]
+            ; byrRegs +[r3]
+            add     r2, r0, 172
+            str     r2, [sp+0x04]  // [V05 loc5]
             ldr     r2, [sp+0x04]  // [V05 loc5]
+            mov     r0, r1
+            ; byrRegs -[r0]
+            mov     r1, r3
+            ; byrRegs -[r1]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
             movw    r3, LOW RELOC 0xD1FFAB1E
+            ; byrRegs -[r3]
             movt    r3, HIGH RELOC 0xD1FFAB1E
             add     r3, pc
             ldr     r3, [r3]
-                       ;; size=60 bbWeight=1 PerfScore 22.00
+                       ;; size=64 bbWeight=1 PerfScore 23.00
 G_M57672_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; byrRegs -[r1-r2]
+            ; byrRegs -[r2]
             blx     r3     // <unknown method>
             movs    r3, 0
             str     r3, [sp+0x04]  // [V05 loc5]
@@ -94,7 +96,7 @@ G_M57672_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             b       SHORT G_M57672_IG06
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 128, prolog size 18, PerfScore 43.00, instruction count 49, allocated bytes for code 128 (MethodHash=76e61eb7) for method System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
+; Total bytes of code 132, prolog size 18, PerfScore 44.00, instruction count 50, allocated bytes for code 132 (MethodHash=76e61eb7) for method System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -106,7 +108,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 64 (0x00040) Actual length = 128 (0x000080)
+  Function Length   : 66 (0x00042) Actual length = 132 (0x000084)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+30 (+6.52%) : 128331.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)

@@ -13,12 +13,12 @@
 ;  V01 arg1         [V01,T03] ( 11, 15.50)     ref  ->   r6         class-hnd single-def <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
 ;  V02 arg2         [V02,T13] (  4,  6   )     int  ->   r8         single-def
 ;  V03 arg3         [V03,T12] (  6,  9   )   byref  ->   r7         single-def
-;  V04 loc0         [V04,T28] (  4,  2.50)     ref  ->   r0         class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
+;  V04 loc0         [V04,T26] (  4,  2.50)     ref  ->   r0         class-hnd <Microsoft.VisualBasic.CompilerServices.Symbols+Method>
 ;  V05 loc1         [V05    ] (  4,  6.50)   ubyte  ->  [sp+0x2C]  do-not-enreg[X] must-init addr-exposed ld-addr-op
 ;  V06 loc2         [V06    ] (  4,  6.50)   ubyte  ->  [sp+0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op
 ;  V07 loc3         [V07,T00] ( 17, 33.50)     int  ->   r9        
-;  V08 loc4         [V08,T26] (  3,  5   )     int  ->  [sp+0x24]  spill-single-def
-;  V09 loc5         [V09,T27] (  3,  5   )     int  ->  [sp+0x20]  spill-single-def
+;  V08 loc4         [V08,T24] (  3,  5   )     int  ->  [sp+0x24]  spill-single-def
+;  V09 loc5         [V09,T25] (  3,  5   )     int  ->  [sp+0x20]  spill-single-def
 ;* V10 loc6         [V10    ] (  0,  0   )     int  ->  zero-ref   
 ;  V11 OutArgs      [V11    ] (  1,  1   )  struct (28) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V12 tmp1         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Reflection.ParameterInfo>
@@ -32,24 +32,22 @@
 ;  V20 tmp9         [V20,T04] (  3, 12   )     ref  ->   r0         "arr expr"
 ;  V21 tmp10        [V21,T05] (  3, 12   )     ref  ->   r1         "arr expr"
 ;  V22 tmp11        [V22,T06] (  3, 12   )     ref  ->   r2         "arr expr"
-;  V23 tmp12        [V23,T07] (  3, 12   )     ref  ->   r2         "arr expr"
+;  V23 tmp12        [V23,T07] (  3, 12   )     ref  ->  r12         "arr expr"
 ;  V24 tmp13        [V24,T14] (  2,  8   )     ref  ->   r0         "argument with side effect"
 ;  V25 tmp14        [V25,T15] (  2,  8   )     ref  ->   r1         "argument with side effect"
-;  V26 tmp15        [V26,T16] (  2,  8   )     ref  ->   r2         "argument with side effect"
-;  V27 tmp16        [V27,T24] (  2,  8   )     int  ->   r3         "argument with side effect"
+;  V26 tmp15        [V26,T22] (  2,  8   )     int  ->   r3         "argument with side effect"
+;  V27 tmp16        [V27,T16] (  2,  8   )     ref  ->   r2         "argument with side effect"
 ;  V28 tmp17        [V28,T17] (  2,  8   )     ref  ->   lr         "argument with side effect"
-;  V29 tmp18        [V29,T18] (  2,  8   )     ref  ->  r12         "argument with side effect"
-;  V30 tmp19        [V30,T08] (  3, 12   )     ref  ->   r0         "arr expr"
-;  V31 tmp20        [V31,T09] (  3, 12   )     ref  ->   r1         "arr expr"
-;  V32 tmp21        [V32,T10] (  3, 12   )     ref  ->   r2         "arr expr"
-;  V33 tmp22        [V33,T11] (  3, 12   )     ref  ->   r2         "arr expr"
-;  V34 tmp23        [V34,T19] (  2,  8   )     ref  ->   r0         "argument with side effect"
-;  V35 tmp24        [V35,T20] (  2,  8   )     ref  ->   r1         "argument with side effect"
-;  V36 tmp25        [V36,T21] (  2,  8   )     ref  ->   r2         "argument with side effect"
-;  V37 tmp26        [V37,T25] (  2,  8   )     int  ->   r3         "argument with side effect"
-;  V38 tmp27        [V38,T22] (  2,  8   )     ref  ->   lr         "argument with side effect"
-;  V39 tmp28        [V39,T23] (  2,  8   )     ref  ->  r12         "argument with side effect"
-;  V40 cse0         [V40,T02] ( 10, 20   )     int  ->  r12         multi-def "CSE - aggressive"
+;  V29 tmp18        [V29,T08] (  3, 12   )     ref  ->   r0         "arr expr"
+;  V30 tmp19        [V30,T09] (  3, 12   )     ref  ->   r1         "arr expr"
+;  V31 tmp20        [V31,T10] (  3, 12   )     ref  ->   r2         "arr expr"
+;  V32 tmp21        [V32,T11] (  3, 12   )     ref  ->  r12         "arr expr"
+;  V33 tmp22        [V33,T18] (  2,  8   )     ref  ->   r0         "argument with side effect"
+;  V34 tmp23        [V34,T19] (  2,  8   )     ref  ->   r1         "argument with side effect"
+;  V35 tmp24        [V35,T23] (  2,  8   )     int  ->   r3         "argument with side effect"
+;  V36 tmp25        [V36,T20] (  2,  8   )     ref  ->   r2         "argument with side effect"
+;  V37 tmp26        [V37,T21] (  2,  8   )     ref  ->   lr         "argument with side effect"
+;  V38 cse0         [V38,T02] ( 10, 20   )     int  ->   lr         multi-def "CSE - aggressive"
 ;
 ; Lcl frame size = 52
 
@@ -100,11 +98,11 @@ G_M27194_IG03:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r
             mov     r9, 0
             ldr     r0, [r5+0x0C]
             ; gcrRegs +[r0]
-            ldr     r4, [r0+0x04]
-            str     r4, [sp+0x24]
+            ldr     r10, [r0+0x04]
+            str     r10, [sp+0x24]
             ldr     r0, [r6+0x0C]
-            ldr     lr, [r0+0x04]
-            str     lr, [sp+0x20]
+            ldr     r4, [r0+0x04]
+            str     r4, [sp+0x20]
             b       SHORT G_M27194_IG08
                        ;; size=46 bbWeight=0.50 PerfScore 8.50
 G_M27194_IG04:        ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r7}, byref, isz
@@ -112,7 +110,7 @@ G_M27194_IG04:        ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r7},
             cmp     r8, 1
             beq     SHORT G_M27194_IG05
             cmp     r8, 2
-            bne     SHORT G_M27194_IG06
+            bne     G_M27194_IG06
             ldr     r0, [r5+0x0C]
             ; gcrRegs +[r0]
             ldr     r1, [r0+0x04]
@@ -121,71 +119,69 @@ G_M27194_IG04:        ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r7},
             adds    r0, 8
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            lsl     r12, r9, 2
-            ldr     r0, [r0+r12]
+            lsl     lr, r9, 2
+            ldr     r0, [r0+lr]
             ; gcrRegs +[r0]
             ; byrRegs -[r0]
             ldr     r1, [r5+0x10]
             ; gcrRegs +[r1]
-            ldr     r2, [r1+0x04]
-            cmp     r9, r2
+            ldr     r3, [r1+0x04]
+            cmp     r9, r3
             bhs     G_M27194_IG15
             adds    r1, 8
             ; gcrRegs -[r1]
             ; byrRegs +[r1]
-            ldr     r1, [r1+r12]
+            ldr     r1, [r1+lr]
             ; gcrRegs +[r1]
             ; byrRegs -[r1]
-            mov     r2, r5
-            ; gcrRegs +[r2]
-            ldrb    r3, [r2+0x28]
+            ldrb    r3, [r5+0x28]
             ldr     r2, [r6+0x0C]
-            ldr     lr, [r2+0x04]
-            cmp     r9, lr
+            ; gcrRegs +[r2]
+            ldr     r12, [r2+0x04]
+            cmp     r9, r12
             bhs     G_M27194_IG15
             adds    r2, 8
             ; gcrRegs -[r2]
             ; byrRegs +[r2]
-            ldr     lr, [r2+r12]
-            ; gcrRegs +[lr]
-            ldr     r2, [r6+0x10]
+            ldr     r2, [r2+lr]
             ; gcrRegs +[r2]
             ; byrRegs -[r2]
-            ldr     r4, [r2+0x04]
-            cmp     r9, r4
-            bhs     G_M27194_IG15
-            adds    r2, 8
-            ; gcrRegs -[r2]
-            ; byrRegs +[r2]
-            ldr     r12, [r2+r12]
+            ldr     r12, [r6+0x10]
             ; gcrRegs +[r12]
+            ldr     r10, [r12+0x04]
+            cmp     r9, r10
+            bhs     G_M27194_IG15
+            add     r12, r12, 8
+            ; gcrRegs -[r12]
+            ; byrRegs +[r12]
+            ldr     lr, [r12+lr]
+            ; gcrRegs +[lr]
             str     r6, [sp+0x08]
             ; gcr arg write
-            movs    r2, 0
-            ; byrRegs -[r2]
-            str     r2, [sp+0x0C]
-            add     r2, sp, 44
-            str     r2, [sp+0x10]
-            add     r2, sp, 40
-            str     r2, [sp+0x14]
+            mov     r12, 0
+            ; byrRegs -[r12]
+            str     r12, [sp+0x0C]
+            addw    r12, sp, 44
+            str     r12, [sp+0x10]
+            addw    r12, sp, 40
+            str     r12, [sp+0x14]
             str     r7, [sp+0x18]
             ; byr arg write
+            str     r2, [sp]
+            ; gcr arg write
+            str     lr, [sp+0x04]
+            ; gcr arg write
             mov     r2, r5
-            ; gcrRegs +[r2]
-            str     lr, [sp]
-            ; gcr arg write
-            str     r12, [sp+0x04]
-            ; gcr arg write
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
             ldr     lr, [r4]
             ; gcrRegs -[lr]
             blx     lr     // <unknown method>
-            ; gcrRegs -[r0-r2 r12]
+            ; gcrRegs -[r0-r2]
             ; gcr arg pop 0
             b       SHORT G_M27194_IG06
-                       ;; size=132 bbWeight=2 PerfScore 96.00
+                       ;; size=148 bbWeight=2 PerfScore 94.00
 G_M27194_IG05:        ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r7}, byref, isz
             ldr     r0, [r5+0x0C]
             ; gcrRegs +[r0]
@@ -195,70 +191,68 @@ G_M27194_IG05:        ; bbWeight=2, gcrefRegs=0060 {r5 r6}, byrefRegs=0080 {r7},
             adds    r0, 8
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            lsl     r12, r9, 2
-            ldr     r0, [r0+r12]
+            lsl     lr, r9, 2
+            ldr     r0, [r0+lr]
             ; gcrRegs +[r0]
             ; byrRegs -[r0]
             ldr     r1, [r5+0x10]
             ; gcrRegs +[r1]
-            ldr     r2, [r1+0x04]
-            cmp     r9, r2
+            ldr     r3, [r1+0x04]
+            cmp     r9, r3
             bhs     SHORT G_M27194_IG15
             adds    r1, 8
             ; gcrRegs -[r1]
             ; byrRegs +[r1]
-            ldr     r1, [r1+r12]
+            ldr     r1, [r1+lr]
             ; gcrRegs +[r1]
             ; byrRegs -[r1]
-            mov     r2, r5
-            ; gcrRegs +[r2]
-            ldrb    r3, [r2+0x28]
+            ldrb    r3, [r5+0x28]
             ldr     r2, [r6+0x0C]
-            ldr     lr, [r2+0x04]
-            cmp     r9, lr
+            ; gcrRegs +[r2]
+            ldr     r12, [r2+0x04]
+            cmp     r9, r12
             bhs     SHORT G_M27194_IG15
             adds    r2, 8
             ; gcrRegs -[r2]
             ; byrRegs +[r2]
-            ldr     lr, [r2+r12]
-            ; gcrRegs +[lr]
-            ldr     r2, [r6+0x10]
+            ldr     r2, [r2+lr]
             ; gcrRegs +[r2]
             ; byrRegs -[r2]
-            ldr     r4, [r2+0x04]
-            cmp     r9, r4
-            bhs     SHORT G_M27194_IG15
-            adds    r2, 8
-            ; gcrRegs -[r2]
-            ; byrRegs +[r2]
-            ldr     r12, [r2+r12]
+            ldr     r12, [r6+0x10]
             ; gcrRegs +[r12]
+            ldr     r10, [r12+0x04]
+            cmp     r9, r10
+            bhs     SHORT G_M27194_IG15
+            add     r12, r12, 8
+            ; gcrRegs -[r12]
+            ; byrRegs +[r12]
+            ldr     lr, [r12+lr]
+            ; gcrRegs +[lr]
             str     r6, [sp+0x08]
             ; gcr arg write
-            movs    r2, 0
-            ; byrRegs -[r2]
-            str     r2, [sp+0x0C]
-            add     r2, sp, 44
...

+46 (+10.70%) : 61683.dasm - Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource:TryGetCompleteBuffer(Microsoft.Diagnostics.Tracing.Utilities.FastStream,uint,double,int,byref):ubyte:this (FullOpts)

@@ -9,45 +9,43 @@
 ; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T14] (  4,  6.50)     ref  ->   r7         this class-hnd single-def <Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource>
+;  V00 this         [V00,T13] (  4,  6.50)     ref  ->   r7         this class-hnd single-def <Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource>
 ;  V01 arg1         [V01,T00] ( 16, 38   )     ref  ->   r5         class-hnd single-def <Microsoft.Diagnostics.Tracing.Utilities.FastStream>
-;  V02 arg2         [V02,T16] (  6,  5   )     int  ->   r8         single-def
-;  V03 arg3         [V03,T17] (  5,  4   )  double  ->  [sp+0x18]  single-def
-;  V04 arg4         [V04,T13] (  5,  7   )     int  ->   r6         single-def
-;  V05 arg5         [V05,T19] (  6,  5   )   byref  ->   r9         single-def
-;  V06 loc0         [V06,T21] (  3,  3   )     int  ->  [sp+0x14] 
-;  V07 loc1         [V07,T04] (  9, 23.50)     int  ->  r10        
-;  V08 loc2         [V08,T08] (  3, 12   )   ubyte  ->  [sp+0x10]  spill-single-def
+;  V02 arg2         [V02,T14] (  6,  5   )     int  ->  [sp+0x24]  single-def
+;  V03 arg3         [V03,T15] (  5,  4   )  double  ->  [sp+0x18]  single-def
+;  V04 arg4         [V04,T12] (  5,  7   )     int  ->   r6         single-def
+;  V05 arg5         [V05,T17] (  6,  5   )   byref  ->   r9         single-def
+;  V06 loc0         [V06,T19] (  3,  3   )     int  ->  [sp+0x14] 
+;  V07 loc1         [V07,T05] (  8, 19.50)     int  ->  r10        
+;  V08 loc2         [V08,T10] (  3, 12   )   ubyte  ->  [sp+0x10]  spill-single-def
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T09] (  2, 16   )     ref  ->  [sp+0x0C]  class-hnd spill-single-def "impAppendStmt" <Microsoft.Diagnostics.Tracing.StackSources.LinuxPerfScriptEventParser>
-;  V11 tmp2         [V11,T20] (  5,  4.50)     int  ->  r10         "Inline stloc first use temp"
+;  V10 tmp1         [V10,T08] (  2, 16   )     ref  ->  [sp+0x08]  class-hnd spill-single-def "impAppendStmt" <Microsoft.Diagnostics.Tracing.StackSources.LinuxPerfScriptEventParser>
+;  V11 tmp2         [V11,T18] (  5,  4.50)     int  ->  r10         "Inline stloc first use temp"
 ;  V12 tmp3         [V12,T06] (  5, 18   )     int  ->   r3         "Inline stloc first use temp"
-;  V13 tmp4         [V13,T05] (  3, 20   )     int  ->   r1         "Inlining Arg"
-;  V14 tmp5         [V14,T07] (  5, 18   )     int  ->   r2         "Inline stloc first use temp"
-;  V15 tmp6         [V15,T18] (  3,  6   )     ref  ->   r0         "arr expr"
+;  V13 tmp4         [V13,T04] (  3, 20   )     int  ->   r1         "Inlining Arg"
+;  V14 tmp5         [V14,T07] (  5, 18   )     int  ->  r12         "Inline stloc first use temp"
+;  V15 tmp6         [V15,T16] (  3,  6   )     ref  ->   r0         "arr expr"
 ;  V16 tmp7         [V16,T01] (  3, 24   )     ref  ->   r0         "arr expr"
-;  V17 tmp8         [V17,T02] (  3, 24   )     ref  ->   r1         "arr expr"
-;  V18 tmp9         [V18,T10] (  2, 16   )     ref  ->   r0         "argument with side effect"
-;  V19 tmp10        [V19,T12] (  2, 16   )     int  ->   r1         "argument with side effect"
-;  V20 tmp11        [V20,T11] (  2, 16   )     ref  ->   r1         "argument with side effect"
-;* V21 tmp12        [V21,T15] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;  V22 cse0         [V22,T23] (  3,  1.50)     int  ->  r10         "CSE - moderate"
-;  V23 rat0         [V23,T22] (  3,  3   )     int  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V24 rat1         [V24,T03] (  3, 24   )     int  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V17 tmp8         [V17,T02] (  3, 24   )     ref  ->   r0         "arr expr"
+;  V18 tmp9         [V18,T09] (  2, 16   )     int  ->   r0         "argument with side effect"
+;  V19 cse0         [V19,T11] (  3, 12   )     int  ->  [sp+0x0C]  spill-single-def "CSE - aggressive"
+;  V20 cse1         [V20,T21] (  3,  1.50)     int  ->  r10         "CSE - moderate"
+;  V21 rat0         [V21,T20] (  3,  3   )     int  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V22 rat1         [V22,T03] (  3, 24   )     int  ->   r1         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 36
+; Lcl frame size = 44
 
 G_M40376_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 36
-            add     r11, sp, 64
+            sub     sp, 44
+            add     r11, sp, 72
             mov     r7, r0
             ; gcrRegs +[r7]
             mov     r5, r1
             ; gcrRegs +[r5]
             mov     r8, r2
             mov     r6, r3
-            ldr     r9, [sp+0x48]  // [V05 arg5]
+            ldr     r9, [sp+0x50]  // [V05 arg5]
             ; byrRegs +[r9]
                        ;; size=22 bbWeight=1 PerfScore 8.00
 G_M40376_IG02:        ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
@@ -67,6 +65,7 @@ G_M40376_IG02:        ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9},
 G_M40376_IG03:        ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref
             mov     r0, r5
             ; gcrRegs +[r0]
+            str     r8, [sp+0x24]
             mov     r1, r8
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -75,13 +74,14 @@ G_M40376_IG03:        ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r
             blx     r3     // Microsoft.Diagnostics.Tracing.Utilities.FastStream:PeekHelper(uint):uint:this
             ; gcrRegs -[r0]
             mov     r10, r0
-                       ;; size=20 bbWeight=0.50 PerfScore 4.00
+            ldr     r8, [sp+0x24]  // [V02 arg2]
+                       ;; size=28 bbWeight=0.50 PerfScore 5.00
 G_M40376_IG04:        ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
             ldr     r0, [r5+0x10]
             ; gcrRegs +[r0]
             ldr     r1, [r0+0x04]
             cmp     r10, r1
-            bhs     G_M40376_IG21
+            bhs     G_M40376_IG24
             adds    r0, 8
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
@@ -96,7 +96,7 @@ G_M40376_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movs    r0, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M40376_IG06:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 36
+            add     sp, 44
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
 G_M40376_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, gcvars, byref, isz
@@ -109,7 +109,7 @@ G_M40376_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00A0 {r5 r7
             asrs    r3, r1, 31
             cmp     r10, r1
             sbcs    r0, r3
-            bge     SHORT G_M40376_IG15
+            bge     SHORT G_M40376_IG19
                        ;; size=20 bbWeight=0.50 PerfScore 4.00
 G_M40376_IG08:        ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
             ldr     r0, [r5+0x24]
@@ -135,7 +135,7 @@ G_M40376_IG10:        ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9},
             ; gcrRegs +[r0]
             ldr     r1, [r0+0x04]
             cmp     r3, r1
-            bhs     SHORT G_M40376_IG21
+            bhs     G_M40376_IG24
             adds    r0, 8
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
@@ -148,71 +148,76 @@ G_M40376_IG10:        ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9},
             ldr     r0, [r0]
             ldr     r2, [r7+r0]
             ; gcrRegs +[r2]
-            str     r2, [sp+0x0C]  // [V10 tmp1]
+            str     r2, [sp+0x08]  // [V10 tmp1]
             ; GC ptr vars +{V10}
-            add     r1, r10, 1
-            ldr     r2, [r5+0x24]
+            add     lr, r10, 1
+            str     lr, [sp+0x0C]  // [V19 cse0]
+            mov     r1, lr
+            ldr     r0, [r5+0x24]
+            add     r12, r1, r0
+            ldr     r0, [r5+0x1C]
+            cmp     r12, r0
+            blo     SHORT G_M40376_IG18
+                       ;; size=54 bbWeight=4 PerfScore 84.00
+G_M40376_IG11:        ; bbWeight=2, gcVars=00000100 {V10}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, gcvars, byref
             ; gcrRegs -[r2]
-            adds    r2, r1, r2
-            ldr     lr, [r5+0x1C]
-            cmp     r2, lr
-            blo     SHORT G_M40376_IG12
-                       ;; size=46 bbWeight=4 PerfScore 76.00
-G_M40376_IG11:        ; bbWeight=2, gcVars=00000200 {V10}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, gcvars, byref
             mov     r0, r5
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
-            ldr     r2, [r4]
-            blx     r2     // Microsoft.Diagnostics.Tracing.Utilities.FastStream:PeekHelper(uint):uint:this
+            ldr     r12, [r4]
+            blx     r12        // Microsoft.Diagnostics.Tracing.Utilities.FastStream:PeekHelper(uint):uint:this
             ; gcrRegs -[r0]
-            mov     r2, r0
-                       ;; size=18 bbWeight=2 PerfScore 14.00
-G_M40376_IG12:        ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
-            ldr     r0, [sp+0x0C]
+            mov     r12, r0
+            str     r8, [sp+0x24]  // [V02 arg2]
+            ldr     r2, [sp+0x08]  // [V10 tmp1]
+            ; gcrRegs +[r2]
+                       ;; size=26 bbWeight=2 PerfScore 18.00
+G_M40376_IG12:        ; bbWeight=4, gcrefRegs=00A4 {r2 r5 r7}, byrefRegs=0200 {r9}, byref, isz
+            ldr     r0, [r5+0x10]
+            ; gcrRegs +[r0]
+            ldr     r1, [r0+0x04]
+            cmp     r12, r1
+            bhs     SHORT G_M40376_IG24
+            adds    r0, 8
+            ; gcrRegs -[r0]
+            ; byrRegs +[r0]
+            ldrb    r0, [r0+r12]
+            ; byrRegs -[r0]
+            mov     r3, r0
+            mov     r0, r2
             ; gcrRegs +[r0]
             mov     r1, r5
             ; gcrRegs +[r1]
-            ldr     r1, [r1+0x10]
-            ldr     lr, [r1+0x04]
-            cmp     r2, lr
-            bhs     SHORT G_M40376_IG21
-            adds    r1, 8
-            ; gcrRegs -[r1]
-            ; byrRegs +[r1]
-            ldrb    r1, [r1+r2]
-            ; byrRegs -[r1]
-            mov     r3, r1
-            mov     r1, r5
-            ; gcrRegs +[r1]
             ldr     r2, [sp+0x10]  // [V08 loc2]
+            ; gcrRegs -[r2]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
-            ldr     r12, [r0]
-            ldr     lr, [r4]
+            ldr     r8, [r0]
+            ldr     r12, [r4]
             ; GC ptr vars -{V10}
-            blx     lr     // Microsoft.Diagnostics.Tracing.StackSources.LinuxPerfScriptEventParser:IsEndOfSample(Microsoft.Diagnostics.Tracing.Utilities.FastStream,ubyte,ubyte):ubyte:this
+            blx     r12        // Microsoft.Diagnostics.Tracing.StackSources.LinuxPerfScriptEventParser:IsEndOfSample(Microsoft.Diagnostics.Tracing.Utilities.FastStream,ubyte,ubyte):ubyte:this
             ; gcrRegs -[r0-r1]
             cmp     r0, 0
-            bne     SHORT G_M40376_IG17
-            ldr     r4, [sp+0x10]  // [V08 loc2]
-            cmp     r4, 10
+            bne     SHORT G_M40376_IG20
+            ldr     r10, [sp+0x10] // [V08 loc2]
+            cmp     r10, 10
             bne     SHORT G_M40376_IG14
-                       ;; size=54 bbWeight=4 PerfScore 88.00
+                       ;; size=56 bbWeight=4 PerfScore 84.00
 G_M40376_IG13:        ; bbWeight=2, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref
             ldr     r4, [r9]
             str     r4, [sp+0x14]  // [V06 loc0]
                        ;; size=6 bbWeight=2 PerfScore 4.00
 G_M40376_IG14:        ; bbWeight=4, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
-            add     r10, r10, 1
+            ldr     r10, [sp+0x0C] // [V19 cse0]
             movs    r0, 0
             mov     r1, r6
             asrs    r2, r1, 31
             cmp     r10, r1
             sbcs    r0, r2
-            blt     SHORT G_M40376_IG08
+            blt     SHORT G_M40376_IG17
                        ;; size=16 bbWeight=4 PerfScore 28.00
 G_M40376_IG15:        ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r9}, byref, isz
             movs    r0, 0
@@ -222,25 +227,42 @@ G_M40376_IG15:        ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0200 {r
             vldr    d4, [sp+0x18]  // [V03 arg3]
             vcmp    d4, d0
             vmrs    APSR, FPSCR
-            bhs     SHORT G_M40376_IG19
+            bhs     SHORT G_M40376_IG22
             ldr     r4, [sp+0x14]  // [V06 loc0]
             str     r4, [r9]
             movs    r0, 0
                        ;; size=36 bbWeight=0.50 PerfScore 5.50
 G_M40376_IG16:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 36
+            add     sp, 44
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M40376_IG17:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0200 {r9}, gcvars, byref
...

libraries.pmi.linux.arm.checked.mch

-18 (-25.00%) : 179205.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)

@@ -7,56 +7,47 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T02] (  3,  3   )  struct (16) [sp+0x28]  do-not-enreg[S] single-def double-align <System.Nullable`1[ulong]>
+;  V00 arg0         [V00,T00] (  6,  6   )  struct (16) [sp+0x18]  do-not-enreg[SA] multireg-arg single-def double-align <System.Nullable`1[ulong]>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;  V02 OutArgs      [V02    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2         [V04,T04] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
-;  V05 tmp3         [V05,T01] (  3,  6   )  struct ( 4) [sp+0x1C]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-;  V06 tmp4         [V06,T00] (  5, 10   )  struct (16) [sp+0x08]  do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.Nullable`1[ulong]>
+;* V03 tmp1         [V03,T02] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2         [V04,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
+;  V05 tmp3         [V05,T01] (  3,  6   )  struct ( 4) [sp+0x0C]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;
-; Lcl frame size = 36
+; Lcl frame size = 20
 
 G_M16550_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r0,r1,r2,r3}
             push    {lr}
-            sub     sp, 36
+            sub     sp, 20
                        ;; size=6 bbWeight=1 PerfScore 3.00
 G_M16550_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ldr     r0, [sp+0x28]
-            str     r0, [sp+0x08]
-            ldr     r0, [sp+0x2C]
-            str     r0, [sp+0x0C]
-            ldr     r0, [sp+0x30]
-            str     r0, [sp+0x10]
-            ldr     r0, [sp+0x34]
-            str     r0, [sp+0x14]
             movs    r0, 0
-            strb    r0, [sp+0x1C]
-                       ;; size=22 bbWeight=1 PerfScore 10.00
+            strb    r0, [sp+0x0C]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M16550_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0x1D]
-            ldr     r0, [sp+0x08]
-            ldr     r1, [sp+0x0C]
-            ldr     r2, [sp+0x10]
-            ldr     r3, [sp+0x14]
-            ldrh    lr, [sp+0x1C]
-            str     lr, [sp]
+            strb    r0, [sp+0x0D]
+            ldrh    r0, [sp+0x0C]
+            str     r0, [sp]
+            ldr     r0, [sp+0x18]
+            ldr     r1, [sp+0x1C]
+            ldr     r2, [sp+0x20]
+            ldr     r3, [sp+0x24]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[ulong],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
             ; gcrRegs +[r0]
             ; gcr arg pop 0
-                       ;; size=34 bbWeight=1 PerfScore 11.00
+                       ;; size=32 bbWeight=1 PerfScore 11.00
 G_M16550_IG04:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 36
+            add     sp, 20
             pop     lr
             add     sp, 16
             bx      lr
                        ;; size=10 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 72, prolog size 6, PerfScore 28.00, instruction count 28, allocated bytes for code 72 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 54, prolog size 6, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -68,19 +59,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 72 (0x000048)
+  Function Length   : 27 (0x0001b) Actual length = 54 (0x000036)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 6 (0x06)
   ---- Unwind codes ----
-    09          add sp, sp, #36                     ; opsize 16
+    05          add sp, sp, #20                     ; opsize 16
     ED 00       pop {lr}                            ; opsize 16
     EC 0F       pop {r0,r1,r2,r3}                   ; opsize 16
     FF          end
     ---- Epilog start at index 6 ----
-    09          add sp, sp, #36                     ; opsize 16
+    05          add sp, sp, #20                     ; opsize 16
     A0 00       pop {lr}                            ; opsize 32
     04          add sp, sp, #16                     ; opsize 16
     FD          end + nop                           ; opsize 16

-18 (-25.00%) : 179186.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)

@@ -7,56 +7,47 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T02] (  3,  3   )  struct (16) [sp+0x28]  do-not-enreg[S] single-def double-align <System.Nullable`1[double]>
+;  V00 arg0         [V00,T00] (  6,  6   )  struct (16) [sp+0x18]  do-not-enreg[SA] multireg-arg single-def double-align <System.Nullable`1[double]>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;  V02 OutArgs      [V02    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2         [V04,T04] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
-;  V05 tmp3         [V05,T01] (  3,  6   )  struct ( 4) [sp+0x1C]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-;  V06 tmp4         [V06,T00] (  5, 10   )  struct (16) [sp+0x08]  do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.Nullable`1[double]>
+;* V03 tmp1         [V03,T02] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2         [V04,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
+;  V05 tmp3         [V05,T01] (  3,  6   )  struct ( 4) [sp+0x0C]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;
-; Lcl frame size = 36
+; Lcl frame size = 20
 
 G_M42124_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r0,r1,r2,r3}
             push    {lr}
-            sub     sp, 36
+            sub     sp, 20
                        ;; size=6 bbWeight=1 PerfScore 3.00
 G_M42124_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ldr     r0, [sp+0x28]
-            str     r0, [sp+0x08]
-            ldr     r0, [sp+0x2C]
-            str     r0, [sp+0x0C]
-            ldr     r0, [sp+0x30]
-            str     r0, [sp+0x10]
-            ldr     r0, [sp+0x34]
-            str     r0, [sp+0x14]
             movs    r0, 0
-            strb    r0, [sp+0x1C]
-                       ;; size=22 bbWeight=1 PerfScore 10.00
+            strb    r0, [sp+0x0C]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M42124_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0x1D]
-            ldr     r0, [sp+0x08]
-            ldr     r1, [sp+0x0C]
-            ldr     r2, [sp+0x10]
-            ldr     r3, [sp+0x14]
-            ldrh    lr, [sp+0x1C]
-            str     lr, [sp]
+            strb    r0, [sp+0x0D]
+            ldrh    r0, [sp+0x0C]
+            str     r0, [sp]
+            ldr     r0, [sp+0x18]
+            ldr     r1, [sp+0x1C]
+            ldr     r2, [sp+0x20]
+            ldr     r3, [sp+0x24]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[double],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
             ; gcrRegs +[r0]
             ; gcr arg pop 0
-                       ;; size=34 bbWeight=1 PerfScore 11.00
+                       ;; size=32 bbWeight=1 PerfScore 11.00
 G_M42124_IG04:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 36
+            add     sp, 20
             pop     lr
             add     sp, 16
             bx      lr
                        ;; size=10 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 72, prolog size 6, PerfScore 28.00, instruction count 28, allocated bytes for code 72 (MethodHash=91715b73) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 54, prolog size 6, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=91715b73) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -68,19 +59,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 72 (0x000048)
+  Function Length   : 27 (0x0001b) Actual length = 54 (0x000036)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 6 (0x06)
   ---- Unwind codes ----
-    09          add sp, sp, #36                     ; opsize 16
+    05          add sp, sp, #20                     ; opsize 16
     ED 00       pop {lr}                            ; opsize 16
     EC 0F       pop {r0,r1,r2,r3}                   ; opsize 16
     FF          end
     ---- Epilog start at index 6 ----
-    09          add sp, sp, #36                     ; opsize 16
+    05          add sp, sp, #20                     ; opsize 16
     A0 00       pop {lr}                            ; opsize 32
     04          add sp, sp, #16                     ; opsize 16
     FD          end + nop                           ; opsize 16

-18 (-25.00%) : 179194.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)

@@ -7,56 +7,47 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T02] (  3,  3   )  struct (16) [sp+0x28]  do-not-enreg[S] single-def double-align <System.Nullable`1[long]>
+;  V00 arg0         [V00,T00] (  6,  6   )  struct (16) [sp+0x18]  do-not-enreg[SA] multireg-arg single-def double-align <System.Nullable`1[long]>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;  V02 OutArgs      [V02    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1         [V03,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V04 tmp2         [V04,T04] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
-;  V05 tmp3         [V05,T01] (  3,  6   )  struct ( 4) [sp+0x1C]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-;  V06 tmp4         [V06,T00] (  5, 10   )  struct (16) [sp+0x08]  do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.Nullable`1[long]>
+;* V03 tmp1         [V03,T02] (  0,  0   )   ubyte  ->  zero-ref    "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V04 tmp2         [V04,T03] (  0,  0   )   ubyte  ->  zero-ref    "field V01.value (fldOffset=0x1)" P-INDEP
+;  V05 tmp3         [V05,T01] (  3,  6   )  struct ( 4) [sp+0x0C]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
 ;
-; Lcl frame size = 36
+; Lcl frame size = 20
 
 G_M61747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r0,r1,r2,r3}
             push    {lr}
-            sub     sp, 36
+            sub     sp, 20
                        ;; size=6 bbWeight=1 PerfScore 3.00
 G_M61747_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ldr     r0, [sp+0x28]
-            str     r0, [sp+0x08]
-            ldr     r0, [sp+0x2C]
-            str     r0, [sp+0x0C]
-            ldr     r0, [sp+0x30]
-            str     r0, [sp+0x10]
-            ldr     r0, [sp+0x34]
-            str     r0, [sp+0x14]
             movs    r0, 0
-            strb    r0, [sp+0x1C]
-                       ;; size=22 bbWeight=1 PerfScore 10.00
+            strb    r0, [sp+0x0C]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M61747_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0x1D]
-            ldr     r0, [sp+0x08]
-            ldr     r1, [sp+0x0C]
-            ldr     r2, [sp+0x10]
-            ldr     r3, [sp+0x14]
-            ldrh    lr, [sp+0x1C]
-            str     lr, [sp]
+            strb    r0, [sp+0x0D]
+            ldrh    r0, [sp+0x0C]
+            str     r0, [sp]
+            ldr     r0, [sp+0x18]
+            ldr     r1, [sp+0x1C]
+            ldr     r2, [sp+0x20]
+            ldr     r3, [sp+0x24]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[long],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
             ; gcrRegs +[r0]
             ; gcr arg pop 0
-                       ;; size=34 bbWeight=1 PerfScore 11.00
+                       ;; size=32 bbWeight=1 PerfScore 11.00
 G_M61747_IG04:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 36
+            add     sp, 20
             pop     lr
             add     sp, 16
             bx      lr
                        ;; size=10 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 72, prolog size 6, PerfScore 28.00, instruction count 28, allocated bytes for code 72 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 54, prolog size 6, PerfScore 20.00, instruction count 20, allocated bytes for code 54 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -68,19 +59,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 36 (0x00024) Actual length = 72 (0x000048)
+  Function Length   : 27 (0x0001b) Actual length = 54 (0x000036)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 6 (0x06)
   ---- Unwind codes ----
-    09          add sp, sp, #36                     ; opsize 16
+    05          add sp, sp, #20                     ; opsize 16
     ED 00       pop {lr}                            ; opsize 16
     EC 0F       pop {r0,r1,r2,r3}                   ; opsize 16
     FF          end
     ---- Epilog start at index 6 ----
-    09          add sp, sp, #36                     ; opsize 16
+    05          add sp, sp, #20                     ; opsize 16
     A0 00       pop {lr}                            ; opsize 32
     04          add sp, sp, #16                     ; opsize 16
     FD          end + nop                           ; opsize 16

+16 (+8.51%) : 79904.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)

@@ -8,30 +8,28 @@
 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T03] (  2,  4   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp3         [V05,T05] (  4,  3.50)     ref  ->   r1        
-;  V06 tmp4         [V06,T02] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-;  V07 tmp5         [V07,T07] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7         [V09,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
-;  V10 tmp8         [V10,T01] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9         [V11,T08] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V12 tmp10        [V12,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;* V13 cse0         [V13,T11] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;  V14 cse1         [V14,T06] (  4,  3   )     int  ->   r5         "CSE - aggressive"
+;  V05 tmp3         [V05,T04] (  4,  3.50)     ref  ->   r1        
+;  V06 tmp4         [V06,T01] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+;  V07 tmp5         [V07,T05] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
+;  V10 tmp8         [V10,T00] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+;* V11 cse0         [V11,T08] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M22152_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M22152_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
@@ -41,9 +39,9 @@ G_M22152_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             bne     SHORT G_M22152_IG08
                        ;; size=18 bbWeight=1 PerfScore 6.00
 G_M22152_IG03:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r5, 0xd1ff
-            movt    r5, 0xd1ff
-            ldr     r1, [r5]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            ldr     r1, [r0]
             ; gcrRegs +[r1]
             cmp     r1, 0
             bne     SHORT G_M22152_IG05
@@ -60,12 +58,14 @@ G_M22152_IG04:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs +[r1]
             str     r1, [sp]
             ; GC ptr vars +{V06}
-            ldr     r3, [r5-0x2C]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movt    r0, 0xd1ff
+            ldr     r3, [r0]
             ; gcrRegs +[r3]
             cmp     r3, 0
             beq     SHORT G_M22152_IG09
             adds    r0, r1, 4
-            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             mov     r1, r3
             movw    r12, 0xd1ff
@@ -78,7 +78,8 @@ G_M22152_IG04:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r2, [sp]
             ; gcrRegs +[r2]
             str     r1, [r2+0x0C]
-            mov     r0, r5
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
             mov     r1, r2
             ; gcrRegs +[r1]
             movw    r12, 0xd1ff
@@ -87,18 +88,18 @@ G_M22152_IG04:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=72 bbWeight=0.50 PerfScore 12.50
+                       ;; size=84 bbWeight=0.50 PerfScore 14.00
 G_M22152_IG05:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r2]
             ; GC ptr vars -{V06}
-            movs    r0, 0
-            strb    r0, [sp+0x04]
+            movs    r3, 0
+            strb    r3, [sp+0x04]
                        ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG06:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0x05]
+            strb    r3, [sp+0x05]
+            ldrh    r3, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldrh    r3, [sp+0x04]
             movs    r2, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -107,8 +108,9 @@ G_M22152_IG06:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1 r4]
                        ;; size=26 bbWeight=1 PerfScore 8.00
 G_M22152_IG07:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0] +[r4]
             movw    r0, 0xd1ff
@@ -128,7 +130,7 @@ G_M22152_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 188, prolog size 8, PerfScore 37.50, instruction count 62, allocated bytes for code 188 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 204, prolog size 10, PerfScore 41.00, instruction count 67, allocated bytes for code 204 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -140,7 +142,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 94 (0x0005e) Actual length = 188 (0x0000bc)
+  Function Length   : 102 (0x00066) Actual length = 204 (0x0000cc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -148,7 +150,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

+20 (+8.77%) : 208466.dasm - Microsoft.Build.Collections.ArrayDictionary2[System.Numerics.Vector1[float],System.Nullable1[int]]:set_Item(System.Numerics.Vector1[float],System.Nullable`1[int]):this (FullOpts)

@@ -8,25 +8,26 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T04] (  7, 12   )     ref  ->   r5         this class-hnd single-def <Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
-;  V01 arg1         [V01,T00] ( 10, 20   )  struct (16) [sp+0x40]  do-not-enreg[SA] multireg-arg single-def double-align <System.Numerics.Vector`1[float]>
-;  V02 arg2         [V02,T09] (  2,  1   )  struct ( 8) [sp+0x50]  do-not-enreg[S] single-def <System.Nullable`1[int]>
-;  V03 loc0         [V03,T05] (  2,  5   )     ref  ->   r6         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.Numerics.Vector`1[float]]>
-;  V04 loc1         [V04,T02] (  8, 22   )     int  ->   r7        
+;  V00 this         [V00,T03] (  7, 12   )     ref  ->   r5         this class-hnd single-def <Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]>
+;  V01 arg1         [V01,T04] ( 10, 11   )  struct (16) [sp+0x50]  do-not-enreg[SA] multireg-arg single-def double-align <System.Numerics.Vector`1[float]>
+;  V02 arg2         [V02,T10] (  2,  1   )  struct ( 8) [sp+0x60]  do-not-enreg[S] single-def <System.Nullable`1[int]>
+;  V03 loc0         [V03,T08] (  2,  5   )     ref  ->   r6         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.Numerics.Vector`1[float]]>
+;  V04 loc1         [V04,T01] (  8, 22   )     int  ->   r7        
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (24) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T01] (  3, 24   )     ref  ->   r0         "arr expr"
-;* V07 tmp2         [V07,T06] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V08 tmp3         [V08,T03] (  2, 16   )  struct (16) [sp+0x18]  do-not-enreg[S] double-align "argument with side effect" <System.Numerics.Vector`1[float]>
-;* V09 tmp4         [V09,T07] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.Numerics.Vector`1[float]>
-;  V10 tmp5         [V10,T08] (  3,  3   )     ref  ->   r3         single-def "arr expr"
+;  V06 tmp1         [V06,T00] (  3, 24   )     ref  ->   r3         "arr expr"
+;  V07 tmp2         [V07,T02] (  2, 16   )  struct (16) [sp+0x18]  do-not-enreg[S] double-align "argument with side effect" <System.Numerics.Vector`1[float]>
+;  V08 tmp3         [V08,T09] (  3,  3   )     ref  ->   r3         single-def "arr expr"
+;  V09 cse0         [V09,T05] (  4,  6   )     int  ->   r8         hoist multi-def "CSE - aggressive"
+;  V10 cse1         [V10,T06] (  4,  6   )     int  ->   r9         hoist multi-def "CSE - aggressive"
+;  V11 cse2         [V11,T07] (  4,  6   )     int  ->  r10         hoist multi-def "CSE - aggressive"
 ;
-; Lcl frame size = 40
+; Lcl frame size = 44
 
 G_M22793_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r2,r3}
-            push    {r4,r5,r6,r7,r11,lr}
-            sub     sp, 40
-            add     r11, sp, 56
+            push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+            sub     sp, 44
+            add     r11, sp, 72
             mov     r5, r0
             ; gcrRegs +[r5]
                        ;; size=14 bbWeight=1 PerfScore 5.00
@@ -37,38 +38,39 @@ G_M22793_IG02:        ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            ldr     r6, [r0]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r6, [r3]
             ; gcrRegs +[r6]
             movs    r7, 0
-            ldr     r0, [r5+0x0C]
-            cmp     r0, 0
+            ldr     r3, [r5+0x0C]
+            cmp     r3, 0
             ble     SHORT G_M22793_IG04
-                       ;; size=38 bbWeight=1 PerfScore 13.00
+            ldr     r8, [sp+0x50]
+            ldr     r9, [sp+0x54]
+            ldr     r10, [sp+0x58]
+                       ;; size=50 bbWeight=1 PerfScore 16.00
 G_M22793_IG03:        ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r5+0x04]
-            ; gcrRegs +[r0]
-            ldr     r3, [r0+0x04]
-            cmp     r7, r3
+            ldr     r3, [r5+0x04]
+            ; gcrRegs +[r3]
+            ldr     r2, [r3+0x04]
+            cmp     r7, r2
             bhs     SHORT G_M22793_IG08
-            lsls    r3, r7, 4
-            adds    r3, 8
-            adds    r0, r0, r3
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            ldr     r3, [r0]
-            str     r3, [sp+0x18]
-            ldr     r3, [r0+0x04]
-            str     r3, [sp+0x1C]
-            ldr     r3, [r0+0x08]
-            str     r3, [sp+0x20]
-            ldr     r3, [r0+0x0C]
-            str     r3, [sp+0x24]
-            mov     r0, r6
-            ; gcrRegs +[r0]
-            ; byrRegs -[r0]
+            lsls    r2, r7, 4
+            adds    r2, 8
+            adds    r3, r3, r2
+            ; gcrRegs -[r3]
+            ; byrRegs +[r3]
+            ldr     r2, [r3]
+            str     r2, [sp+0x18]
+            ldr     r2, [r3+0x04]
+            str     r2, [sp+0x1C]
+            ldr     r2, [r3+0x08]
+            str     r2, [sp+0x20]
+            ldr     r2, [r3+0x0C]
+            str     r2, [sp+0x24]
             ldr     r3, [sp+0x18]
+            ; byrRegs -[r3]
             str     r3, [sp+0x08]
             ldr     r3, [sp+0x1C]
             str     r3, [sp+0x0C]
@@ -76,12 +78,13 @@ G_M22793_IG03:        ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
             str     r3, [sp+0x10]
             ldr     r3, [sp+0x24]
             str     r3, [sp+0x14]
-            ldr     r2, [sp+0x40]
-            ldr     r3, [sp+0x44]
-            ldr     r1, [sp+0x48]
-            ldr     lr, [sp+0x4C]
-            str     r1, [sp]
-            str     lr, [sp+0x04]
+            ldr     r0, [sp+0x5C]
+            mov     r2, r8
+            mov     r3, r9
+            str     r10, [sp]
+            str     r0, [sp+0x04]
+            mov     r0, r6
+            ; gcrRegs +[r0]
             movw    r4, 0xd1ff
             movt    r4, 0xd1ff
             ldr     r1, [r4]
@@ -93,19 +96,21 @@ G_M22793_IG03:        ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
             ldr     r3, [r5+0x0C]
             cmp     r7, r3
             blt     SHORT G_M22793_IG03
-                       ;; size=88 bbWeight=4 PerfScore 160.00
+                       ;; size=84 bbWeight=4 PerfScore 156.00
 G_M22793_IG04:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r6]
-            ldr     r3, [sp+0x50]
+            ldr     r3, [sp+0x60]
             str     r3, [sp+0x08]
-            ldr     r3, [sp+0x54]
+            ldr     r3, [sp+0x64]
             str     r3, [sp+0x0C]
-            ldr     r2, [sp+0x40]
-            ldr     r3, [sp+0x44]
-            ldr     r0, [sp+0x48]
-            ldr     r1, [sp+0x4C]
-            str     r0, [sp]
-            str     r1, [sp+0x04]
+            ldr     r8, [sp+0x50]
+            ldr     r9, [sp+0x54]
+            ldr     r10, [sp+0x58]
+            ldr     r0, [sp+0x5C]
+            mov     r2, r8
+            mov     r3, r9
+            str     r10, [sp]
+            str     r0, [sp+0x04]
             mov     r0, r5
             ; gcrRegs +[r0]
             movw    r1, 0xd1ff
@@ -113,10 +118,10 @@ G_M22793_IG04:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
             ldr     r1, [r1]
             blx     r1     // Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Add(System.Numerics.Vector`1[float],System.Nullable`1[int]):this
             ; gcrRegs -[r0 r5]
-                       ;; size=34 bbWeight=0.50 PerfScore 7.50
+                       ;; size=46 bbWeight=0.50 PerfScore 8.50
 G_M22793_IG05:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 40
-            pop     {r4,r5,r6,r7,r11,lr}
+            add     sp, 44
+            pop     {r4,r5,r6,r7,r8,r9,r10,r11,lr}
             add     sp, 8
             bx      lr
                        ;; size=10 bbWeight=0.50 PerfScore 2.00
@@ -132,14 +137,14 @@ G_M22793_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5},
             adds    r3, r3, r2
             ; gcrRegs -[r3]
             ; byrRegs +[r3]
-            ldr     r2, [sp+0x50]
+            ldr     r2, [sp+0x60]
             str     r2, [r3]
-            ldr     r2, [sp+0x54]
+            ldr     r2, [sp+0x64]
             str     r2, [r3+0x04]
                        ;; size=22 bbWeight=0.50 PerfScore 5.50
 G_M22793_IG07:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 40
-            pop     {r4,r5,r6,r7,r11,lr}
+            add     sp, 44
+            pop     {r4,r5,r6,r7,r8,r9,r10,r11,lr}
             add     sp, 8
             bx      lr
                        ;; size=10 bbWeight=0.50 PerfScore 2.00
@@ -152,7 +157,7 @@ G_M22793_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 228, prolog size 12, PerfScore 195.00, instruction count 96, allocated bytes for code 228 (MethodHash=af7aa6f6) for method Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:set_Item(System.Numerics.Vector`1[float],System.Nullable`1[int]):this (FullOpts)
+; Total bytes of code 248, prolog size 12, PerfScore 195.00, instruction count 100, allocated bytes for code 248 (MethodHash=af7aa6f6) for method Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:set_Item(System.Numerics.Vector`1[float],System.Nullable`1[int]):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -164,25 +169,27 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 114 (0x00072) Actual length = 228 (0x0000e4)
+  Function Length   : 124 (0x0007c) Actual length = 248 (0x0000f8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
-  Epilog Start Index         : 6 (0x06)
+  Epilog Start Index         : 5 (0x05)
   ---- Scope 1
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
-  Epilog Start Index         : 6 (0x06)
+  Epilog Start Index         : 5 (0x05)
   ---- Unwind codes ----
-    0A          add sp, sp, #40                     ; opsize 16
-    A8 F0       pop {r4,r5,r6,r7,r11,lr}            ; opsize 32
+    0B          add sp, sp, #44                     ; opsize 16
+    DF          pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}  ; opsize 32
     EC 0C       pop {r2,r3}                         ; opsize 16
     FF          end
-    ---- Epilog start at index 6 ----
-    0A          add sp, sp, #40                     ; opsize 16
-    A8 F0       pop {r4,r5,r6,r7,r11,lr}            ; opsize 32
+    ---- Epilog start at index 5 ----
+    0B          add sp, sp, #44                     ; opsize 16
+    DF          pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}  ; opsize 32
     02          add sp, sp, #8                      ; opsize 16
     FD          end + nop                           ; opsize 16
     FF          end
+    FF          end
+    FF          end
 

+38 (+18.45%) : 93353.dasm - System.Data.RBTree1[System.Numerics.Vector1[float]]:Search(System.Numerics.Vector`1[float]):int:this (FullOpts)

@@ -8,35 +8,36 @@
 ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  8, 19   )     ref  ->   r4         this class-hnd single-def <System.Data.RBTree`1[System.Numerics.Vector`1[float]]>
-;  V01 arg1         [V01,T00] (  6, 18   )  struct (16) [sp+0x48]  do-not-enreg[S] single-def double-align <System.Numerics.Vector`1[float]>
-;  V02 loc0         [V02,T04] (  8, 19   )     int  ->   r5        
-;  V03 loc1         [V03,T15] (  3, 12   )     int  ->   r0        
+;  V00 this         [V00,T02] (  8, 19   )     ref  ->   r4         this class-hnd single-def <System.Data.RBTree`1[System.Numerics.Vector`1[float]]>
+;  V01 arg1         [V01,T14] (  6,  9   )  struct (16) [sp+0x58]  do-not-enreg[SA] multireg-arg single-def double-align <System.Numerics.Vector`1[float]>
+;  V02 loc0         [V02,T03] (  8, 19   )     int  ->   r5        
+;  V03 loc1         [V03,T13] (  3, 12   )     int  ->   r0        
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (24) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct (16) zero-ref    double-align "spilled call-like call argument" <System.Numerics.Vector`1[float]>
 ;* V06 tmp2         [V06    ] (  0,  0   )    long  ->  zero-ref    "field V05._00 (fldOffset=0x0)" P-INDEP
 ;* V07 tmp3         [V07    ] (  0,  0   )    long  ->  zero-ref    "field V05._01 (fldOffset=0x8)" P-INDEP
-;  V08 tmp4         [V08,T01] (  3, 24   )     ref  ->   r0         "arr expr"
-;  V09 tmp5         [V09,T02] (  3, 24   )     ref  ->   r0         "arr expr"
-;  V10 tmp6         [V10,T07] (  2, 16   )     ref  ->   r0         "argument with side effect"
-;* V11 tmp7         [V11,T16] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SFA] multireg-arg double-align "argument with side effect" <System.Numerics.Vector`1[float]>
-;  V12 tmp8         [V12,T08] (  2, 16   )  struct (16) [sp+0x18]  do-not-enreg[S] double-align "argument with side effect" <System.Numerics.Vector`1[float]>
+;  V08 tmp4         [V08,T00] (  3, 24   )     ref  ->   r3         "arr expr"
+;  V09 tmp5         [V09,T01] (  3, 24   )     ref  ->   r3         "arr expr"
+;  V10 tmp6         [V10,T06] (  2, 16   )  struct (16) [sp+0x20]  do-not-enreg[S] double-align "argument with side effect" <System.Numerics.Vector`1[float]>
+;  V11 tmp7         [V11,T09] (  3, 12   )     ref  ->   r0         "arr expr"
+;  V12 tmp8         [V12,T10] (  3, 12   )     ref  ->   r0         "arr expr"
 ;  V13 tmp9         [V13,T11] (  3, 12   )     ref  ->   r0         "arr expr"
 ;  V14 tmp10        [V14,T12] (  3, 12   )     ref  ->   r0         "arr expr"
-;  V15 tmp11        [V15,T13] (  3, 12   )     ref  ->   r0         "arr expr"
-;  V16 tmp12        [V16,T14] (  3, 12   )     ref  ->   r0         "arr expr"
-;  V17 cse0         [V17,T09] (  4, 12   )     int  ->   r9         "CSE - aggressive"
-;  V18 cse1         [V18,T10] (  4, 12   )     int  ->   r7         "CSE - aggressive"
-;  V19 cse2         [V19,T05] (  5, 16   )     int  ->   r6         "CSE - aggressive"
-;  V20 cse3         [V20,T06] (  5, 16   )     int  ->   r8         "CSE - aggressive"
+;  V15 cse0         [V15,T07] (  4, 12   )     int  ->  [sp+0x1C]  spill-single-def "CSE - aggressive"
+;  V16 cse1         [V16,T08] (  4, 12   )     int  ->  r10         "CSE - aggressive"
+;  V17 cse2         [V17,T04] (  5, 16   )     int  ->   r9         "CSE - aggressive"
+;  V18 cse3         [V18,T15] (  2,  5   )     int  ->   r6         hoist "CSE - aggressive"
+;  V19 cse4         [V19,T16] (  2,  5   )     int  ->   r7         hoist "CSE - aggressive"
+;  V20 cse5         [V20,T17] (  2,  5   )     int  ->   r8         hoist "CSE - aggressive"
+;  V21 cse6         [V21,T05] (  5, 16   )     int  ->  [sp+0x18]  spill-single-def "CSE - aggressive"
 ;
-; Lcl frame size = 40
+; Lcl frame size = 52
 
 G_M52206_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r2,r3}
-            push    {r4,r5,r6,r7,r8,r9,r11,lr}
-            sub     sp, 40
-            add     r11, sp, 64
+            push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+            sub     sp, 52
+            add     r11, sp, 80
             mov     r4, r0
             ; gcrRegs +[r4]
                        ;; size=14 bbWeight=1 PerfScore 5.00
@@ -44,112 +45,119 @@ G_M52206_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             ldr     r5, [r4+0x14]
             cmp     r5, 0
             beq     SHORT G_M52206_IG07
-                       ;; size=6 bbWeight=1 PerfScore 3.00
+            ldr     r6, [sp+0x58]
+            ldr     r7, [sp+0x5C]
+            ldr     r8, [sp+0x60]
+                       ;; size=14 bbWeight=1 PerfScore 6.00
 G_M52206_IG03:        ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+            ldr     r3, [r4+0x04]
+            ; gcrRegs +[r3]
+            asr     r9, r5, 16
+            ldr     r2, [r3+0x04]
+            cmp     r9, r2
+            bhs     SHORT G_M52206_IG09
+            adds    r3, 8
+            ; gcrRegs -[r3]
+            ; byrRegs +[r3]
+            lsl     r10, r9, 2
+            ldr     r3, [r3+r10]
+            ; gcrRegs +[r3]
+            ; byrRegs -[r3]
+            ldr     r3, [r3+0x04]
+            uxth    r1, r5
+            str     r1, [sp+0x18]
+            ldr     r2, [r3+0x04]
+            cmp     r1, r2
+            bhs     SHORT G_M52206_IG09
+            movs    r2, 48
+            mul     r2, r1, r2
+            add     lr, r2, 8
+            str     lr, [sp+0x1C]
+            add     r3, lr
+            ; gcrRegs -[r3]
+            ; byrRegs +[r3]
+            ldr     r2, [r3+0x18]
+            str     r2, [sp+0x20]
+            ldr     r2, [r3+0x1C]
+            str     r2, [sp+0x24]
+            ldr     r2, [r3+0x20]
+            str     r2, [sp+0x28]
+            ldr     r2, [r3+0x24]
+            str     r2, [sp+0x2C]
+            ldr     r3, [sp+0x20]
+            ; byrRegs -[r3]
+            str     r3, [sp+0x08]
+            ldr     r3, [sp+0x24]
+            str     r3, [sp+0x0C]
+            ldr     r3, [sp+0x28]
+            str     r3, [sp+0x10]
+            ldr     r3, [sp+0x2C]
+            str     r3, [sp+0x14]
+            ldr     r0, [sp+0x64]
+            mov     r2, r6
+            mov     r3, r7
+            str     r8, [sp]
+            str     r0, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldr     r0, [r0+0x04]
-            asrs    r6, r5, 16
-            ldr     r3, [r0+0x04]
-            cmp     r6, r3
-            bhs     SHORT G_M52206_IG09
-            adds    r0, 8
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            lsls    r7, r6, 2
-            ldr     r0, [r0+r7]
-            ; gcrRegs +[r0]
-            ; byrRegs -[r0]
-            ldr     r0, [r0+0x04]
-            uxth    r8, r5
-            ldr     r3, [r0+0x04]
-            cmp     r8, r3
-            bhs     SHORT G_M52206_IG09
-            movs    r3, 48
-            mul     r3, r8, r3
-            add     r9, r3, 8
-            add     r0, r9
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            ldr     r3, [r0+0x18]
-            str     r3, [sp+0x18]
-            ldr     r3, [r0+0x1C]
-            str     r3, [sp+0x1C]
-            ldr     r3, [r0+0x20]
-            str     r3, [sp+0x20]
-            ldr     r3, [r0+0x24]
-            str     r3, [sp+0x24]
-            mov     r0, r4
-            ; gcrRegs +[r0]
-            ; byrRegs -[r0]
-            ldr     r2, [sp+0x48]
-            ldr     r3, [sp+0x4C]
-            ldr     r1, [sp+0x50]
-            ldr     lr, [sp+0x54]
-            str     r1, [sp]
-            str     lr, [sp+0x04]
-            ldr     r1, [sp+0x18]
-            str     r1, [sp+0x08]
-            ldr     r1, [sp+0x1C]
-            str     r1, [sp+0x0C]
-            ldr     r1, [sp+0x20]
-            str     r1, [sp+0x10]
-            ldr     r1, [sp+0x24]
-            str     r1, [sp+0x14]
-            ldr     r1, [r4]
-            ldr     r1, [r1+0x2C]
-            ldr     r1, [r1+0x10]
-            blx     r1     // <unknown method>
+            ldr     r12, [r4]
+            ldr     r12, [r12+0x2C]
+            ldr     r12, [r12+0x10]
+            blx     r12        // <unknown method>
             ; gcrRegs -[r0]
             cmp     r0, 0
             beq     SHORT G_M52206_IG07
             cmp     r0, 0
             bge     SHORT G_M52206_IG05
-                       ;; size=108 bbWeight=4 PerfScore 196.00
+                       ;; size=118 bbWeight=4 PerfScore 196.00
 G_M52206_IG04:        ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [r4+0x04]
             ; gcrRegs +[r0]
             ldr     r3, [r0+0x04]
-            cmp     r6, r3
+            cmp     r9, r3
             bhs     SHORT G_M52206_IG09
             adds    r0, 8
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            ldr     r0, [r0+r7]
+            ldr     r0, [r0+r10]
             ; gcrRegs +[r0]
             ; byrRegs -[r0]
             ldr     r0, [r0+0x04]
             ldr     r3, [r0+0x04]
-            cmp     r8, r3
+            ldr     r10, [sp+0x18] // [V21 cse6]
+            cmp     r10, r3
             bhs     SHORT G_M52206_IG09
-            add     r0, r9
+            ldr     r10, [sp+0x1C] // [V15 cse0]
+            add     r0, r10
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
             ldr     r5, [r0+0x04]
             b       SHORT G_M52206_IG06
-                       ;; size=26 bbWeight=2 PerfScore 26.00
+                       ;; size=36 bbWeight=2 PerfScore 30.00
 G_M52206_IG05:        ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[r0]
             ldr     r0, [r4+0x04]
             ; gcrRegs +[r0]
             ldr     r3, [r0+0x04]
-            cmp     r6, r3
+            cmp     r9, r3
             bhs     SHORT G_M52206_IG09
             adds    r0, 8
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            ldr     r0, [r0+r7]
+            ldr     r0, [r0+r10]
             ; gcrRegs +[r0]
             ; byrRegs -[r0]
             ldr     r0, [r0+0x04]
             ldr     r3, [r0+0x04]
-            cmp     r8, r3
+            ldr     r10, [sp+0x18] // [V21 cse6]
+            cmp     r10, r3
             bhs     SHORT G_M52206_IG09
-            add     r0, r9
+            ldr     r10, [sp+0x1C] // [V15 cse0]
+            add     r0, r10
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
             ldr     r5, [r0+0x08]
-                       ;; size=24 bbWeight=2 PerfScore 24.00
+                       ;; size=34 bbWeight=2 PerfScore 28.00
 G_M52206_IG06:        ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[r0]
             cmp     r5, 0
@@ -160,8 +168,8 @@ G_M52206_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             mov     r0, r5
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M52206_IG08:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 40
-            pop     {r4,r5,r6,r7,r8,r9,r11,lr}
+            add     sp, 52
+            pop     {r4,r5,r6,r7,r8,r9,r10,r11,lr}
             add     sp, 8
             bx      lr
...

libraries_tests.run.linux.arm.Release.mch

-46 (-25.00%) : 183663.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (Tier1)

@@ -10,129 +10,106 @@
 ;
 ;  V00 this         [V00,T01] (  4,  4   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
 ;  V01 arg1         [V01,T03] (  3,  3   )     ref  ->   r5         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-;  V02 arg2         [V02    ] (  5,  5   )  struct ( 8) [sp+0x60]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+;  V02 arg2         [V02    ] (  5,  5   )  struct ( 8) [sp+0x50]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
 ;* V03 loc0         [V03    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct ( 8) zero-ref    "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
-;  V06 tmp2         [V06    ] (  2,  4   )  struct (12) [sp+0x3C]  do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-;  V07 tmp3         [V07,T00] (  4,  8   )  struct (20) [sp+0x28]  do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+;  V06 tmp2         [V06    ] (  2,  4   )  struct (12) [sp+0x2C]  do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+;  V07 tmp3         [V07,T00] (  4,  8   )  struct (20) [sp+0x18]  do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct ( 4) zero-ref    "Inlining Arg" <System.Nullable`1[ubyte]>
 ;* V09 tmp5         [V09    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
 ;* V10 tmp6         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V03.value (fldOffset=0x1)" P-INDEP
-;  V11 tmp7         [V11,T09] (  2,  2   )     ref  ->   r6         single-def "field V05.Type (fldOffset=0x0)" P-INDEP
-;  V12 tmp8         [V12,T10] (  2,  2   )   ubyte  ->   r7         single-def "field V05.State (fldOffset=0x4)" P-INDEP
-;  V13 tmp9         [V13,T04] (  2,  4   )     ref  ->  [sp+0x3C]  do-not-enreg[H] hidden-struct-arg "field V06.DefaultType (fldOffset=0x0)" P-DEP
-;  V14 tmp10        [V14,T05] (  2,  4   )     ref  ->  [sp+0x40]  do-not-enreg[H] hidden-struct-arg "field V06._extensions (fldOffset=0x4)" P-DEP
-;  V15 tmp11        [V15,T07] (  2,  4   )   ubyte  ->  [sp+0x44]  do-not-enreg[H] hidden-struct-arg "field V06.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP
-;* V16 tmp12        [V16,T12] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V17 tmp13        [V17,T13] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.value (fldOffset=0x1)" P-INDEP
-;  V18 tmp14        [V18,T02] (  3,  6   )  struct ( 4) [sp+0x24]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V19 tmp15        [V19,T11] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V20 tmp16        [V20,T06] (  2,  4   )     ref  ->   r5         single-def "argument with side effect"
-;  V21 tmp17        [V21,T08] (  2,  4   )  struct (20) [sp+0x10]  do-not-enreg[S] must-init single-def "argument with side effect" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+;  V11 tmp7         [V11,T07] (  2,  2   )     ref  ->   r6         single-def "field V05.Type (fldOffset=0x0)" P-INDEP
+;  V12 tmp8         [V12,T08] (  2,  2   )   ubyte  ->   r7         single-def "field V05.State (fldOffset=0x4)" P-INDEP
+;  V13 tmp9         [V13,T04] (  2,  4   )     ref  ->  [sp+0x2C]  do-not-enreg[H] hidden-struct-arg "field V06.DefaultType (fldOffset=0x0)" P-DEP
+;  V14 tmp10        [V14,T05] (  2,  4   )     ref  ->  [sp+0x30]  do-not-enreg[H] hidden-struct-arg "field V06._extensions (fldOffset=0x4)" P-DEP
+;  V15 tmp11        [V15,T06] (  2,  4   )   ubyte  ->  [sp+0x34]  do-not-enreg[H] hidden-struct-arg "field V06.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP
+;* V16 tmp12        [V16,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V17 tmp13        [V17,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.value (fldOffset=0x1)" P-INDEP
+;  V18 tmp14        [V18,T02] (  3,  6   )  struct ( 4) [sp+0x14]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 72
+; Lcl frame size = 56
 
 G_M63285_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r2,r3}
             push    {r4,r5,r6,r7,r11,lr}
-            sub     sp, 72
-            add     r11, sp, 88
-            sub     r4, r11, 72
-            movs    r5, 7
+            sub     sp, 56
+            add     r11, sp, 72
+            sub     r4, r11, 48
             movs    r2, 0
             movs    r3, 0
             stm     r4!, {r2,r3}
-            subs    r5, 1
-            bhi     SHORT pc-6 (-3 instructions)
+            stm     r4!, {r2,r3}
+            stm     r4!, {r2,r3}
+            stm     r4!, {r2,r3}
             mov     r4, r0
             ; gcrRegs +[r4]
             mov     r5, r1
             ; gcrRegs +[r5]
                        ;; size=32 bbWeight=1 PerfScore 13.00
 G_M63285_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            ldr     r6, [sp+0x60]
+            ldr     r6, [sp+0x50]
             ; gcrRegs +[r6]
-            ldrb    r7, [sp+0x64]
+            ldrb    r7, [sp+0x54]
             ldr     r2, [r4+0x04]
             ; gcrRegs +[r2]
-            add     r1, sp, 60
-            add     r0, sp, 96
+            add     r1, sp, 44
+            add     r0, sp, 80
             movs    r3, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r2]
-            str     r6, [sp+0x28]
-            strb    r7, [sp+0x2C]
+            str     r6, [sp+0x18]
+            strb    r7, [sp+0x1C]
                        ;; size=34 bbWeight=1 PerfScore 12.00
 G_M63285_IG03:        ; bbWeight=1, nogc, extend
-            ldr     r0, [sp+0x3C]
-            str     r0, [sp+0x30]
-            ldr     r0, [sp+0x40]
-            str     r0, [sp+0x34]
-            ldr     r0, [sp+0x44]
-            str     r0, [sp+0x38]
+            ldr     r3, [sp+0x2C]
+            str     r3, [sp+0x20]
+            ldr     r3, [sp+0x30]
+            str     r3, [sp+0x24]
+            ldr     r3, [sp+0x34]
+            str     r3, [sp+0x28]
                        ;; size=12 bbWeight=1 PerfScore 6.00
 G_M63285_IG04:        ; bbWeight=1, extend
-            add     r0, sp, 16
-            ; byrRegs +[r0]
-            add     r1, sp, 40
-            ; byrRegs +[r1]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs +[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs -[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs +[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs -[r2]
-            str     r2, [r0!+0x04]
-            movs    r0, 0
-            ; byrRegs -[r0]
-            strb    r0, [sp+0x24]
-                       ;; size=50 bbWeight=1 PerfScore 14.00
+            movs    r3, 0
+            strb    r3, [sp+0x14]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M63285_IG05:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r6]
-            ; byrRegs -[r1]
-            strb    r0, [sp+0x25]
-            mov     r0, r4
-            ; gcrRegs +[r0]
-            mov     r1, r5
-            ; gcrRegs +[r1]
-            ldr     r2, [sp+0x18]
+            strb    r3, [sp+0x15]
+            ldrh    r3, [sp+0x14]
+            str     r3, [sp+0x0C]
+            ldr     r2, [sp+0x20]
             ; gcrRegs +[r2]
             str     r2, [sp]
-            ldr     r2, [sp+0x1C]
+            ldr     r2, [sp+0x24]
             str     r2, [sp+0x04]
-            ldr     r2, [sp+0x20]
+            ldr     r2, [sp+0x28]
             ; gcrRegs -[r2]
             str     r2, [sp+0x08]
-            ldr     r2, [sp+0x10]
+            ldr     r2, [sp+0x18]
             ; gcrRegs +[r2]
-            ldr     r3, [sp+0x14]
-            ldrh    lr, [sp+0x24]
-            str     lr, [sp+0x0C]
+            ldr     r3, [sp+0x1C]
+            mov     r1, r5
+            ; gcrRegs +[r1]
+            mov     r0, r4
+            ; gcrRegs +[r0]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0-r2 r4-r5]
-                       ;; size=46 bbWeight=1 PerfScore 17.00
+                       ;; size=44 bbWeight=1 PerfScore 17.00
 G_M63285_IG06:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 72
+            add     sp, 56
             pop     {r4,r5,r6,r7,r11,lr}
             add     sp, 8
             bx      lr
                        ;; size=10 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 184, prolog size 28, PerfScore 66.00, instruction count 66, allocated bytes for code 184 (MethodHash=41b408ca) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (Tier1)
+; Total bytes of code 138, prolog size 28, PerfScore 54.00, instruction count 54, allocated bytes for code 138 (MethodHash=41b408ca) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -144,19 +121,19 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 92 (0x0005c) Actual length = 184 (0x0000b8)
+  Function Length   : 69 (0x00045) Actual length = 138 (0x00008a)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 6 (0x06)
   ---- Unwind codes ----
-    12          add sp, sp, #72                     ; opsize 16
+    0E          add sp, sp, #56                     ; opsize 16
     A8 F0       pop {r4,r5,r6,r7,r11,lr}            ; opsize 32
     EC 0C       pop {r2,r3}                         ; opsize 16
     FF          end
     ---- Epilog start at index 6 ----
-    12          add sp, sp, #72                     ; opsize 16
+    0E          add sp, sp, #56                     ; opsize 16
     A8 F0       pop {r4,r5,r6,r7,r11,lr}            ; opsize 32
     02          add sp, sp, #8                      ; opsize 16
     FD          end + nop                           ; opsize 16

-24 (-18.18%) : 160849.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)

@@ -5,102 +5,83 @@
 ; partially interruptible
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [sp+0x3C]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-;  V01 arg1         [V01    ] (  1,  1   )     ref  ->  [sp+0x38]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-;  V02 arg2         [V02    ] (  1,  1   )     ref  ->  [sp+0x34]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-;  V03 arg3         [V03    ] (  1,  1   )   byref  ->  [sp+0x30]  do-not-enreg[]
-;  V04 arg4         [V04    ] (  1,  1   )   byref  ->  [sp+0x58]  do-not-enreg[]
-;  V05 arg5         [V05    ] (  1,  1   )     ref  ->  [sp+0x5C]  do-not-enreg[] class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
+;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [sp+0x2C]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V01 arg1         [V01    ] (  1,  1   )     ref  ->  [sp+0x28]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+;  V02 arg2         [V02    ] (  1,  1   )     ref  ->  [sp+0x24]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+;  V03 arg3         [V03    ] (  1,  1   )   byref  ->  [sp+0x20]  do-not-enreg[]
+;  V04 arg4         [V04    ] (  1,  1   )   byref  ->  [sp+0x40]  do-not-enreg[]
+;  V05 arg5         [V05    ] (  1,  1   )     ref  ->  [sp+0x44]  do-not-enreg[] class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct (12) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07    ] (  1,  1   )     ref  ->  [sp+0x2C]  do-not-enreg[] must-init "handle histogram profile tmp"
-;  V08 tmp2         [V08    ] (  1,  1   )     ref  ->  [sp+0x28]  do-not-enreg[] must-init "argument with side effect"
-;  V09 tmp3         [V09    ] (  1,  1   )     ref  ->  [sp+0x24]  do-not-enreg[] must-init "argument with side effect"
-;  V10 tmp4         [V10    ] (  1,  1   )     ref  ->  [sp+0x20]  do-not-enreg[] must-init "argument with side effect"
-;  V11 tmp5         [V11    ] (  1,  1   )     ref  ->  [sp+0x1C]  do-not-enreg[] must-init "argument with side effect"
-;  V12 tmp6         [V12    ] (  1,  1   )   byref  ->  [sp+0x18]  do-not-enreg[] must-init "argument with side effect"
-;  V13 tmp7         [V13    ] (  1,  1   )     ref  ->  [sp+0x14]  do-not-enreg[] must-init "argument with side effect"
+;  V07 tmp1         [V07    ] (  1,  1   )     ref  ->  [sp+0x1C]  do-not-enreg[] must-init "handle histogram profile tmp"
+;  V08 tmp2         [V08    ] (  1,  1   )     ref  ->  [sp+0x18]  do-not-enreg[] must-init "argument with side effect"
+;  V09 tmp3         [V09    ] (  1,  1   )     ref  ->  [sp+0x14]  do-not-enreg[] must-init "argument with side effect"
 ;
-; Lcl frame size = 64
+; Lcl frame size = 48
 
 G_M63673_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r4,r5,r6,r10,r11,lr}
-            sub     sp, 64
-            add     r11, sp, 80
-            sub     r6, r11, 60
+            push    {r4,r10,r11,lr}
+            sub     sp, 48
+            add     r11, sp, 56
             movs    r4, 0
-            movs    r5, 0
-            stm     r6!, {r4,r5}
-            stm     r6!, {r4,r5}
-            stm     r6!, {r4,r5}
-            str     r4, [r6]
-            str     r0, [sp+0x3C]  // [V00 arg0]
-            str     r1, [sp+0x38]  // [V01 arg1]
-            str     r2, [sp+0x34]  // [V02 arg2]
-            str     r3, [sp+0x30]  // [V03 arg3]
-                       ;; size=34 bbWeight=1 PerfScore 14.00
+            str     r4, [sp+0x1C]  // [V07 tmp1]
+            str     r4, [sp+0x18]  // [V08 tmp2]
+            str     r4, [sp+0x14]  // [V09 tmp3]
+            str     r0, [sp+0x2C]  // [V00 arg0]
+            str     r1, [sp+0x28]  // [V01 arg1]
+            str     r2, [sp+0x24]  // [V02 arg2]
+            str     r3, [sp+0x20]  // [V03 arg3]
+                       ;; size=26 bbWeight=1 PerfScore 11.00
 G_M63673_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ldr     r0, [sp+0x3C]
+            ldr     r0, [sp+0x28]
             ; gcrRegs +[r0]
-            str     r0, [sp+0x14]  // [V13 tmp7]
-            ldr     r0, [sp+0x38]  // [V01 arg1]
-            str     r0, [sp+0x20]  // [V10 tmp4]
-            ldr     r0, [sp+0x34]  // [V02 arg2]
-            str     r0, [sp+0x1C]  // [V11 tmp5]
-            ldr     r0, [sp+0x30]  // [V03 arg3]
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            str     r0, [sp+0x18]  // [V12 tmp6]
-            ldr     r0, [sp+0x38]  // [V01 arg1]
-            ; gcrRegs +[r0]
-            ; byrRegs -[r0]
-            str     r0, [sp+0x2C]  // [V07 tmp1]
-            ldr     r0, [sp+0x2C]  // [V07 tmp1]
+            str     r0, [sp+0x1C]  // [V07 tmp1]
+            ldr     r0, [sp+0x1C]  // [V07 tmp1]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_CLASSPROFILE32
             ; gcrRegs -[r0]
-            ldr     r0, [sp+0x2C]  // [V07 tmp1]
+            ldr     r0, [sp+0x1C]  // [V07 tmp1]
             ; gcrRegs +[r0]
-            str     r0, [sp+0x28]  // [V08 tmp2]
-            ldr     r0, [sp+0x28]  // [V08 tmp2]
-            ldr     r3, [sp+0x28]  // [V08 tmp2]
+            str     r0, [sp+0x18]  // [V08 tmp2]
+            ldr     r0, [sp+0x18]  // [V08 tmp2]
+            ldr     r3, [sp+0x18]  // [V08 tmp2]
             ; gcrRegs +[r3]
             ldr     r3, [r3]
             ; gcrRegs -[r3]
             ldr     r3, [r3+0x34]
             ldr     r3, [r3+0x14]
             blx     r3     // <unknown method>
-            str     r0, [sp+0x24]  // [V09 tmp3]
-            ldr     r1, [sp+0x58]  // [V04 arg4]
+            str     r0, [sp+0x14]  // [V09 tmp3]
+            ldr     r1, [sp+0x40]  // [V04 arg4]
             ; byrRegs +[r1]
             str     r1, [sp+0x04]  // [V06 OutArgs+0x04]
-            ldr     r1, [sp+0x5C]  // [V05 arg5]
+            ldr     r1, [sp+0x44]  // [V05 arg5]
             ; gcrRegs +[r1]
             ; byrRegs -[r1]
             str     r1, [sp+0x08]  // [V06 OutArgs+0x08]
-            ldr     r1, [sp+0x24]  // [V09 tmp3]
+            ldr     r1, [sp+0x14]  // [V09 tmp3]
             str     r1, [sp]   // [V06 OutArgs]
-            ldr     r1, [sp+0x20]  // [V10 tmp4]
-            ldr     r2, [sp+0x1C]  // [V11 tmp5]
+            ldr     r1, [sp+0x28]  // [V01 arg1]
+            ldr     r2, [sp+0x24]  // [V02 arg2]
             ; gcrRegs +[r2]
-            ldr     r3, [sp+0x18]  // [V12 tmp6]
+            ldr     r3, [sp+0x20]  // [V03 arg3]
             ; byrRegs +[r3]
-            ldr     r0, [sp+0x14]  // [V13 tmp7]
+            ldr     r0, [sp+0x2C]  // [V00 arg0]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0-r2]
             ; byrRegs -[r3]
-                       ;; size=92 bbWeight=1 PerfScore 39.00
+                       ;; size=76 bbWeight=1 PerfScore 31.00
 G_M63673_IG03:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 64
-            pop     {r4,r5,r6,r10,r11,pc}
+            add     sp, 48
+            pop     {r4,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 132, prolog size 26, PerfScore 55.00, instruction count 55, allocated bytes for code 132 (MethodHash=f3140746) for method Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
+; Total bytes of code 108, prolog size 18, PerfScore 44.00, instruction count 44, allocated bytes for code 108 (MethodHash=f3140746) for method Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -112,11 +93,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 66 (0x00042) Actual length = 132 (0x000084)
+  Function Length   : 54 (0x00036) Actual length = 108 (0x00006c)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    10          add sp, sp, #64                     ; opsize 16
-    AC 70       pop {r4,r5,r6,r10,r11,lr}           ; opsize 32
+    0C          add sp, sp, #48                     ; opsize 16
+    AC 10       pop {r4,r10,r11,lr}                 ; opsize 32
     FF          end
 

-24 (-18.18%) : 24271.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)

@@ -5,102 +5,83 @@
 ; partially interruptible
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [sp+0x3C]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-;  V01 arg1         [V01    ] (  1,  1   )     ref  ->  [sp+0x38]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-;  V02 arg2         [V02    ] (  1,  1   )     ref  ->  [sp+0x34]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-;  V03 arg3         [V03    ] (  1,  1   )   byref  ->  [sp+0x30]  do-not-enreg[]
-;  V04 arg4         [V04    ] (  1,  1   )   byref  ->  [sp+0x58]  do-not-enreg[]
-;  V05 arg5         [V05    ] (  1,  1   )     ref  ->  [sp+0x5C]  do-not-enreg[] class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
+;  V00 arg0         [V00    ] (  1,  1   )     ref  ->  [sp+0x2C]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V01 arg1         [V01    ] (  1,  1   )     ref  ->  [sp+0x28]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
+;  V02 arg2         [V02    ] (  1,  1   )     ref  ->  [sp+0x24]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+;  V03 arg3         [V03    ] (  1,  1   )   byref  ->  [sp+0x20]  do-not-enreg[]
+;  V04 arg4         [V04    ] (  1,  1   )   byref  ->  [sp+0x40]  do-not-enreg[]
+;  V05 arg5         [V05    ] (  1,  1   )     ref  ->  [sp+0x44]  do-not-enreg[] class-hnd <Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct (12) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07    ] (  1,  1   )     ref  ->  [sp+0x2C]  do-not-enreg[] must-init "handle histogram profile tmp"
-;  V08 tmp2         [V08    ] (  1,  1   )     ref  ->  [sp+0x28]  do-not-enreg[] must-init "argument with side effect"
-;  V09 tmp3         [V09    ] (  1,  1   )     ref  ->  [sp+0x24]  do-not-enreg[] must-init "argument with side effect"
-;  V10 tmp4         [V10    ] (  1,  1   )     ref  ->  [sp+0x20]  do-not-enreg[] must-init "argument with side effect"
-;  V11 tmp5         [V11    ] (  1,  1   )     ref  ->  [sp+0x1C]  do-not-enreg[] must-init "argument with side effect"
-;  V12 tmp6         [V12    ] (  1,  1   )   byref  ->  [sp+0x18]  do-not-enreg[] must-init "argument with side effect"
-;  V13 tmp7         [V13    ] (  1,  1   )     ref  ->  [sp+0x14]  do-not-enreg[] must-init "argument with side effect"
+;  V07 tmp1         [V07    ] (  1,  1   )     ref  ->  [sp+0x1C]  do-not-enreg[] must-init "handle histogram profile tmp"
+;  V08 tmp2         [V08    ] (  1,  1   )     ref  ->  [sp+0x18]  do-not-enreg[] must-init "argument with side effect"
+;  V09 tmp3         [V09    ] (  1,  1   )     ref  ->  [sp+0x14]  do-not-enreg[] must-init "argument with side effect"
 ;
-; Lcl frame size = 64
+; Lcl frame size = 48
 
 G_M63673_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r4,r5,r6,r10,r11,lr}
-            sub     sp, 64
-            add     r11, sp, 80
-            sub     r6, r11, 60
+            push    {r4,r10,r11,lr}
+            sub     sp, 48
+            add     r11, sp, 56
             movs    r4, 0
-            movs    r5, 0
-            stm     r6!, {r4,r5}
-            stm     r6!, {r4,r5}
-            stm     r6!, {r4,r5}
-            str     r4, [r6]
-            str     r0, [sp+0x3C]  // [V00 arg0]
-            str     r1, [sp+0x38]  // [V01 arg1]
-            str     r2, [sp+0x34]  // [V02 arg2]
-            str     r3, [sp+0x30]  // [V03 arg3]
-                       ;; size=34 bbWeight=1 PerfScore 14.00
+            str     r4, [sp+0x1C]  // [V07 tmp1]
+            str     r4, [sp+0x18]  // [V08 tmp2]
+            str     r4, [sp+0x14]  // [V09 tmp3]
+            str     r0, [sp+0x2C]  // [V00 arg0]
+            str     r1, [sp+0x28]  // [V01 arg1]
+            str     r2, [sp+0x24]  // [V02 arg2]
+            str     r3, [sp+0x20]  // [V03 arg3]
+                       ;; size=26 bbWeight=1 PerfScore 11.00
 G_M63673_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ldr     r0, [sp+0x3C]
+            ldr     r0, [sp+0x28]
             ; gcrRegs +[r0]
-            str     r0, [sp+0x14]  // [V13 tmp7]
-            ldr     r0, [sp+0x38]  // [V01 arg1]
-            str     r0, [sp+0x20]  // [V10 tmp4]
-            ldr     r0, [sp+0x34]  // [V02 arg2]
-            str     r0, [sp+0x1C]  // [V11 tmp5]
-            ldr     r0, [sp+0x30]  // [V03 arg3]
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            str     r0, [sp+0x18]  // [V12 tmp6]
-            ldr     r0, [sp+0x38]  // [V01 arg1]
-            ; gcrRegs +[r0]
-            ; byrRegs -[r0]
-            str     r0, [sp+0x2C]  // [V07 tmp1]
-            ldr     r0, [sp+0x2C]  // [V07 tmp1]
+            str     r0, [sp+0x1C]  // [V07 tmp1]
+            ldr     r0, [sp+0x1C]  // [V07 tmp1]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_CLASSPROFILE32
             ; gcrRegs -[r0]
-            ldr     r0, [sp+0x2C]  // [V07 tmp1]
+            ldr     r0, [sp+0x1C]  // [V07 tmp1]
             ; gcrRegs +[r0]
-            str     r0, [sp+0x28]  // [V08 tmp2]
-            ldr     r0, [sp+0x28]  // [V08 tmp2]
-            ldr     r3, [sp+0x28]  // [V08 tmp2]
+            str     r0, [sp+0x18]  // [V08 tmp2]
+            ldr     r0, [sp+0x18]  // [V08 tmp2]
+            ldr     r3, [sp+0x18]  // [V08 tmp2]
             ; gcrRegs +[r3]
             ldr     r3, [r3]
             ; gcrRegs -[r3]
             ldr     r3, [r3+0x34]
             ldr     r3, [r3+0x14]
             blx     r3     // <unknown method>
-            str     r0, [sp+0x24]  // [V09 tmp3]
-            ldr     r1, [sp+0x58]  // [V04 arg4]
+            str     r0, [sp+0x14]  // [V09 tmp3]
+            ldr     r1, [sp+0x40]  // [V04 arg4]
             ; byrRegs +[r1]
             str     r1, [sp+0x04]  // [V06 OutArgs+0x04]
-            ldr     r1, [sp+0x5C]  // [V05 arg5]
+            ldr     r1, [sp+0x44]  // [V05 arg5]
             ; gcrRegs +[r1]
             ; byrRegs -[r1]
             str     r1, [sp+0x08]  // [V06 OutArgs+0x08]
-            ldr     r1, [sp+0x24]  // [V09 tmp3]
+            ldr     r1, [sp+0x14]  // [V09 tmp3]
             str     r1, [sp]   // [V06 OutArgs]
-            ldr     r1, [sp+0x20]  // [V10 tmp4]
-            ldr     r2, [sp+0x1C]  // [V11 tmp5]
+            ldr     r1, [sp+0x28]  // [V01 arg1]
+            ldr     r2, [sp+0x24]  // [V02 arg2]
             ; gcrRegs +[r2]
-            ldr     r3, [sp+0x18]  // [V12 tmp6]
+            ldr     r3, [sp+0x20]  // [V03 arg3]
             ; byrRegs +[r3]
-            ldr     r0, [sp+0x14]  // [V13 tmp7]
+            ldr     r0, [sp+0x2C]  // [V00 arg0]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0-r2]
             ; byrRegs -[r3]
-                       ;; size=92 bbWeight=1 PerfScore 39.00
+                       ;; size=76 bbWeight=1 PerfScore 31.00
 G_M63673_IG03:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 64
-            pop     {r4,r5,r6,r10,r11,pc}
+            add     sp, 48
+            pop     {r4,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 132, prolog size 26, PerfScore 55.00, instruction count 55, allocated bytes for code 132 (MethodHash=f3140746) for method Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
+; Total bytes of code 108, prolog size 18, PerfScore 44.00, instruction count 44, allocated bytes for code 108 (MethodHash=f3140746) for method Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
 ; ============================================================
 
 Unwind Info:
@@ -112,11 +93,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 66 (0x00042) Actual length = 132 (0x000084)
+  Function Length   : 54 (0x00036) Actual length = 108 (0x00006c)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    10          add sp, sp, #64                     ; opsize 16
-    AC 70       pop {r4,r5,r6,r10,r11,lr}           ; opsize 32
+    0C          add sp, sp, #48                     ; opsize 16
+    AC 10       pop {r4,r10,r11,lr}                 ; opsize 32
     FF          end
 

+4 (+4.76%) : 473635.dasm - System.Reflection.MethodInfo:CreateDelegateSystem.__Canon:System.__Canon:this (Instrumented Tier1)

@@ -8,30 +8,29 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  5   )     ref  ->   r4         this class-hnd single-def <System.Reflection.MethodInfo>
-;  V01 TypeCtx      [V01,T01] (  4,  4   )     int  ->   r1         single-def
-;  V02 arg1         [V02,T02] (  3,  3   )     ref  ->   r5         class-hnd single-def <System.Object>
+;  V01 TypeCtx      [V01,T01] (  4,  4   )     int  ->   r5         single-def
+;  V02 arg1         [V02,T02] (  3,  3   )     ref  ->   r6         class-hnd single-def <System.Object>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def "handle histogram profile tmp"
-;* V05 tmp2         [V05,T07] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V05 tmp2         [V05,T06] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
 ;  V06 tmp3         [V06,T03] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
 ;  V07 tmp4         [V07,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;  V08 tmp5         [V08,T05] (  2,  4   )     int  ->   r7         "argument with side effect"
-;  V09 cse0         [V09,T06] (  3,  3   )     int  ->   r6         "CSE - aggressive"
+;  V08 cse0         [V08,T05] (  3,  3   )     int  ->   r5         "CSE - aggressive"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M26839_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r6,r7,r11,lr}
+            push    {r4,r5,r6,r11,lr}
+            sub     sp, 12
             add     r11, sp, 24
             str     r1, [r11-0x14]
             mov     r4, r0
             ; gcrRegs +[r4]
-            mov     r5, r2
-            ; gcrRegs +[r5]
-                       ;; size=16 bbWeight=1 PerfScore 5.00
-G_M26839_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            ldr     r6, [r1+0x20]
-            ldr     r7, [r6]
+            mov     r5, r1
+            mov     r6, r2
+            ; gcrRegs +[r6]
+                       ;; size=20 bbWeight=1 PerfScore 7.00
+G_M26839_IG02:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
             mov     r0, r4
             ; gcrRegs +[r0]
             movw    r1, 0xd1ff
@@ -40,7 +39,8 @@ G_M26839_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_CLASSPROFILE32
             ; gcrRegs -[r0]
-            ldr     r0, [r6]
+            ldr     r5, [r5+0x20]
+            ldr     r0, [r5]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
@@ -48,27 +48,28 @@ G_M26839_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             mov     r1, r0
             ; gcrRegs +[r1]
             mov     r0, r4
-            mov     r2, r5
+            mov     r2, r6
             ; gcrRegs +[r2]
             ldr     r3, [r4]
             ldr     r3, [r3+0x40]
             ldr     r3, [r3+0x0C]
             blx     r3     // <unknown method>
-            ; gcrRegs -[r1-r2 r4-r5]
+            ; gcrRegs -[r1-r2 r4 r6]
             mov     r1, r0
             ; gcrRegs +[r1]
-            mov     r0, r7
+            ldr     r0, [r5]
             ; gcrRegs -[r0]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_CHKCASTANY
             ; gcrRegs -[r1] +[r0]
-                       ;; size=64 bbWeight=1 PerfScore 24.00
+                       ;; size=62 bbWeight=1 PerfScore 23.00
 G_M26839_IG03:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r6,r7,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r5,r6,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 84, prolog size 12, PerfScore 30.00, instruction count 30, allocated bytes for code 84 (MethodHash=fd4b9728) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon](System.Object):System.__Canon:this (Instrumented Tier1)
+; Total bytes of code 88, prolog size 14, PerfScore 32.00, instruction count 32, allocated bytes for code 88 (MethodHash=fd4b9728) for method System.Reflection.MethodInfo:CreateDelegate[System.__Canon](System.Object):System.__Canon:this (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -80,11 +81,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 42 (0x0002a) Actual length = 84 (0x000054)
+  Function Length   : 44 (0x0002c) Actual length = 88 (0x000058)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 FC       pop {r2,r3,r4,r5,r6,r7,r11,lr}      ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 70       pop {r4,r5,r6,r11,lr}               ; opsize 32
     FF          end
 

+28 (+4.84%) : 126311.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:Populate(System.String,int,int):System.Canon[]:this (Tier1)

@@ -9,7 +9,7 @@
 ; 4 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  6,  4   )     ref  ->   r5         this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+;  V00 this         [V00,T02] (  6,  4   )     ref  ->  [r11-0x48]  this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
 ;  V01 arg1         [V01,T00] (  8,  5.94)     ref  ->   r4         class-hnd single-def <System.String>
 ;  V02 arg2         [V02,T03] (  6,  4   )     int  ->   r6         single-def
 ;  V03 arg3         [V03,T04] (  6,  4   )     int  ->   r7         single-def
@@ -23,8 +23,8 @@
 ;  V11 loc7         [V11    ] (  3,  0   )   byref  ->  [r11-0x2C]  must-init pinned
 ;  V12 loc8         [V12,T15] (  2,  2   )     int  ->   r3        
 ;  V13 OutArgs      [V13    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T02] (  7,  6   )     int  ->  [r11-0x30]  spill-single-def
-;  V15 tmp2         [V15,T05] (  3,  6   )     ref  ->  [r11-0x48]  class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
+;  V14 tmp1         [V14,T01] (  7,  6   )     int  ->  [r11-0x30]  spill-single-def
+;  V15 tmp2         [V15,T05] (  3,  6   )     ref  ->  [r11-0x4C]  class-hnd exact spill-single-def "spilling ret_expr" <System.Text.UTF8Encoding+UTF8EncodingSealed>
 ;  V16 tmp3         [V16,T09] (  6,  4   )     int  ->  [r11-0x34]  spill-single-def "guarded devirt return temp"
 ;* V17 tmp4         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
 ;* V18 tmp5         [V18,T17] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
@@ -44,15 +44,12 @@
 ;  V32 tmp19        [V32,T12] (  2,  4   )     int  ->   r0         "argument with side effect"
 ;  V33 tmp20        [V33,T19] (  3,  0   )     ref  ->   r0         single-def "arr expr"
 ;  V34 tmp21        [V34,T20] (  2,  0   )     int  ->   r3         "Cast away GC"
-;* V35 tmp22        [V35,T24] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V36 tmp23        [V36,T21] (  2,  0   )     int  ->   r1         "argument with side effect"
-;  V37 tmp24        [V37,T22] (  2,  0   )     int  ->   r2         "argument with side effect"
-;  V38 tmp25        [V38,T23] (  2,  0   )     int  ->   r3         "argument with side effect"
-;  V39 GsCookie     [V39    ] (  1,  1   )     int  ->  [r11-0x4C]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V40 cse0         [V40,T14] (  3,  2.88)     int  ->   r8         "CSE - moderate"
-;  V41 rat0         [V41,T13] (  3,  3   )     int  ->   lr         "field V30.lo (fldOffset=0x0)" P-INDEP
-;  V42 rat1         [V42,T16] (  2,  2   )     int  ->   r0         "field V30.hi (fldOffset=0x4)" P-INDEP
-;  V43 rat2         [V43,T06] (  3,  6   )     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V35 tmp22        [V35,T21] (  2,  0   )     int  ->   r3         "argument with side effect"
+;  V36 GsCookie     [V36    ] (  1,  1   )     int  ->  [r11-0x50]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
+;  V37 cse0         [V37,T14] (  3,  2.88)     int  ->   r8         "CSE - moderate"
+;  V38 rat0         [V38,T13] (  3,  3   )     int  ->   lr         "field V30.lo (fldOffset=0x0)" P-INDEP
+;  V39 rat1         [V39,T16] (  2,  2   )     int  ->   r0         "field V30.hi (fldOffset=0x4)" P-INDEP
+;  V40 rat2         [V40,T06] (  3,  6   )     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 68
 
@@ -67,57 +64,56 @@ G_M22299_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             str     r4, [r9+0x34]  // [V11 loc7]
             movw    r4, 0xd1ff
             movt    r4, 0xd1ff
-            str     r4, [r9+0x14]  // [V39 GsCookie]
-            mov     r5, r0
-            ; gcrRegs +[r5]
+            str     r4, [r9+0x10]  // [V36 GsCookie]
+            str     r0, [r9+0x18]  // [V00 this]
+            ; GC ptr vars +{V00}
             mov     r4, r1
             ; gcrRegs +[r4]
             mov     r6, r2
             mov     r7, r3
-                       ;; size=46 bbWeight=1 PerfScore 15.00
-G_M22299_IG02:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+                       ;; size=48 bbWeight=1 PerfScore 15.00
+G_M22299_IG02:        ; bbWeight=1, gcVars=00000004 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
             cmp     r4, 0
-            beq     G_M22299_IG18
+            beq     G_M22299_IG14
                        ;; size=6 bbWeight=1 PerfScore 2.00
-G_M22299_IG03:        ; bbWeight=0.94, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M22299_IG03:        ; bbWeight=0.94, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldr     r8, [r4+0x04]
             cmp     r8, 0
-            beq     G_M22299_IG18
+            beq     G_M22299_IG13
                        ;; size=12 bbWeight=0.94 PerfScore 2.81
-G_M22299_IG04:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M22299_IG04:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             cmp     r7, 1
-            beq     G_M22299_IG17
+            beq     G_M22299_IG19
                        ;; size=6 bbWeight=1 PerfScore 2.00
-G_M22299_IG05:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M22299_IG05:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             add     r2, r4, 8
             ; byrRegs +[r2]
             str     r2, [r9+0x38]  // [V07 loc3]
             ldr     lr, [r9+0x38]  // [V07 loc3]
             ; byrRegs +[lr]
-            mov     r1, lr
-            str     r1, [r9+0x30]  // [V14 tmp1]
+            str     lr, [r9+0x30]  // [V14 tmp1]
             movw    r2, 0xd1ff
             ; byrRegs -[r2]
             movt    r2, 0xd1ff
-            ldr     lr, [r2]
-            ; gcrRegs +[lr]
-            ; byrRegs -[lr]
-            str     lr, [r9+0x18]  // [V15 tmp2]
+            ldr     r12, [r2]
+            ; gcrRegs +[r12]
+            str     r12, [r9+0x14] // [V15 tmp2]
             ; GC ptr vars +{V15}
-            ldrsb   r2, [lr]
-            cmp     r1, 0
-            beq     G_M22299_IG13
+            ldrsb   r2, [r12]
+            cmp     lr, 0
+            beq     G_M22299_IG15
             addw    r2, r9, 32 // [V26 tmp13]
             addw    r3, r9, 28 // [V27 tmp14]
-            mov     r0, r1
+            mov     r0, lr
             mov     r1, r8
-            movw    r12, 0xd1ff
-            movt    r12, 0xd1ff
-            ldr     r12, [r12]
-            blx     r12        // <unknown method>
-            ; gcrRegs -[lr]
-            ldr     r1, [r9+0x30]  // [V14 tmp1]
-            subs    r0, r0, r1
+            movw    r5, 0xd1ff
+            movt    r5, 0xd1ff
+            ldr     r5, [r5]
+            blx     r5     // <unknown method>
+            ; gcrRegs -[r12]
+            ; byrRegs -[lr]
+            ldr     r5, [r9+0x30]  // [V14 tmp1]
+            subs    r0, r0, r5
             movs    r1, 2
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -133,13 +129,13 @@ G_M22299_IG05:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             movs    r1, 0
             cmp     lr, 0x80000000
             sbcs    r0, r1
-            bhs     SHORT G_M22299_IG14
+            bhs     SHORT G_M22299_IG16
             str     lr, [r9+0x28]  // [V21 tmp8]
             cmp     r3, r8
             beq     SHORT G_M22299_IG06
-            ldr     r0, [r9+0x18]
+            ldr     r0, [r9+0x14]
             ; gcrRegs +[r0]
-            ldr     r1, [r9+0x30]  // [V14 tmp1]
+            mov     r1, r5
             mov     r2, r8
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
@@ -151,13 +147,13 @@ G_M22299_IG05:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             add     lr, r0
             cmp     lr, 0
             str     lr, [r9+0x28]  // [V21 tmp8]
-            blt     SHORT G_M22299_IG14
-                       ;; size=170 bbWeight=1 PerfScore 53.00
-G_M22299_IG06:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+            blt     SHORT G_M22299_IG16
+                       ;; size=166 bbWeight=1 PerfScore 52.00
+G_M22299_IG06:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldr     lr, [r9+0x28]  // [V21 tmp8]
             str     lr, [r9+0x2C]  // [V16 tmp3]
             cmp     lr, 0x400
-            bgt     SHORT G_M22299_IG15
+            bgt     SHORT G_M22299_IG17
             mov     r3, lr
             tst     r3, r3
             beq     SHORT G_M22299_IG09
@@ -168,7 +164,7 @@ G_M22299_IG06:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             bvc     SHORT G_M22299_IG07
             movs    r3, 0
                        ;; size=36 bbWeight=1 PerfScore 13.00
-G_M22299_IG07:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M22299_IG07:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [sp]
             sub     r0, sp, 0x1000
             cmp     r0, r3
@@ -176,19 +172,19 @@ G_M22299_IG07:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             mov     sp, r0
             b       SHORT G_M22299_IG07
                        ;; size=14 bbWeight=1 PerfScore 6.00
-G_M22299_IG08:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M22299_IG08:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             mov     sp, r3
             ldr     r0, [sp]
             sub     sp, sp, 16
             add     r3, sp, 16
                        ;; size=10 bbWeight=1 PerfScore 4.00
-G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             str     lr, [sp]   // [V13 OutArgs]
             str     r6, [sp+0x04]  // [V13 OutArgs+0x04]
             str     r7, [sp+0x08]  // [V13 OutArgs+0x08]
-            mov     r0, r5
+            ldr     r0, [r9+0x18]  // [V00 this]
             ; gcrRegs +[r0]
-            ldr     r1, [r9+0x30]  // [V14 tmp1]
+            mov     r1, r5
             mov     r2, r8
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -196,14 +192,14 @@ G_M22299_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             blx     lr     // <unknown method>
             str     r0, [r9+0x3C]  // [V04 loc0]
                        ;; size=34 bbWeight=1 PerfScore 11.00
-G_M22299_IG10:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+G_M22299_IG10:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movs    r1, 0
             str     r1, [r9+0x38]  // [V07 loc3]
                        ;; size=6 bbWeight=1 PerfScore 2.00
-G_M22299_IG11:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M22299_IG11:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             addw    r1, r9, 60 // [V04 loc0]
-            mov     r0, r5
+            ldr     r0, [r9+0x18]  // [V00 this]
             ; gcrRegs +[r0]
             mov     r2, r4
             ; gcrRegs +[r2]
@@ -211,28 +207,43 @@ G_M22299_IG11:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
+            ; GC ptr vars -{V00}
             blx     lr     // <unknown method>
-            ; gcrRegs -[r0 r2 r4-r5]
+            ; gcrRegs -[r0 r2 r4]
             ldr     r0, [r9+0x3C]  // [V04 loc0]
             ; gcrRegs +[r0]
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
-            ldr     lr, [r9+0x14]  // [V39 GsCookie]
+            ldr     lr, [r9+0x10]  // [V36 GsCookie]
             cmp     r12, lr
             beq     SHORT G_M22299_IG12
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
             blx     r12        // CORINFO_HELP_FAIL_FAST
             ; gcrRegs -[r0]
-                       ;; size=54 bbWeight=1 PerfScore 17.00
+                       ;; size=56 bbWeight=1 PerfScore 17.00
 G_M22299_IG12:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs +[r0]
             mov     sp, r9
             add     sp, 68
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=8 bbWeight=1 PerfScore 3.00
-G_M22299_IG13:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[r0]
+G_M22299_IG13:        ; bbWeight=0.47, gcVars=00000004 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[r0] +[r4]
+            ; GC ptr vars +{V00 V02}
+            ldr     r5, [r9+0x18]  // [V00 this]
+            ; gcrRegs +[r5]
+            b       SHORT G_M22299_IG20
+                       ;; size=6 bbWeight=0.47 PerfScore 0.94
...

+6 (+6.67%) : 500844.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)

@@ -16,12 +16,12 @@
 ;* V05 tmp4         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
 ;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.XmlBaseWriter+NamespaceManager+Namespace>
 ;  V07 cse0         [V07,T02] (  5,  5   )     ref  ->   r2         "CSE - aggressive"
-;  V08 cse1         [V08,T04] (  3,  3   )     ref  ->   r1         "CSE - aggressive"
+;  V08 cse1         [V08,T04] (  3,  3   )     ref  ->  [sp+0x04]  spill-single-def "CSE - aggressive"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M35133_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r4,lr}
+            push    {r2,r3,r4,lr}
             mov     r4, r0
             ; gcrRegs +[r4]
                        ;; size=4 bbWeight=1 PerfScore 2.00
@@ -51,31 +51,36 @@ G_M35133_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             ; gcrRegs +[r1]
             movs    r0, 0
             strh    r0, [r1+0x14]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            str     r3, [sp+0x04]
+            ; GC ptr vars +{V08}
             adds    r0, r1, 4
             ; byrRegs +[r0]
-            movw    r1, 0xd1ff
-            ; gcrRegs -[r1]
-            movt    r1, 0xd1ff
+            mov     r1, r3
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
             blx     r12        // CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[r4] +[r1]
+            ; gcrRegs -[r1 r4]
             ; byrRegs -[r0]
             add     r0, r2, 8
             ; byrRegs +[r0]
+            ldr     r1, [sp+0x04]  // [V08 cse1]
+            ; gcrRegs +[r1]
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
+            ; GC ptr vars -{V08}
             blx     r12        // CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[r1]
             ; byrRegs -[r0]
             movs    r3, 0
             str     r3, [r2+0x0C]
-                       ;; size=84 bbWeight=1 PerfScore 28.00
+                       ;; size=90 bbWeight=1 PerfScore 31.00
 G_M35133_IG03:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r4,pc}
+            pop     {r2,r3,r4,pc}
                        ;; size=2 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 90, prolog size 2, PerfScore 31.00, instruction count 31, allocated bytes for code 90 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
+; Total bytes of code 96, prolog size 2, PerfScore 34.00, instruction count 34, allocated bytes for code 96 (MethodHash=d42076c2) for method System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -87,12 +92,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 45 (0x0002d) Actual length = 90 (0x00005a)
+  Function Length   : 48 (0x00030) Actual length = 96 (0x000060)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    D4          pop {r4,lr}                         ; opsize 16
-    FF          end
+    ED 1C       pop {r2,r3,r4,lr}                   ; opsize 16
     FF          end
     FF          end
 

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-42 (-13.91%) : 42548.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)

@@ -9,18 +9,18 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  4   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.ProjectInfo>
-;  V01 arg1         [V01,T05] (  3,  3   )  struct (16) [sp+0x110]  do-not-enreg[S] single-def double-align <Microsoft.CodeAnalysis.VersionStamp>
+;  V01 arg1         [V01,T05] (  3,  3   )  struct (16) [sp+0xD8]  do-not-enreg[S] single-def double-align <Microsoft.CodeAnalysis.VersionStamp>
 ;* V02 loc0         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.String]>
 ;* V03 loc1         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOutputInfo]>
 ;* V04 loc2         [V04    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-;  V05 loc3         [V05,T12] (  2,  2   )  struct (20) [sp+0xE4]  do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Guid]>
+;  V05 loc3         [V05,T09] (  2,  2   )  struct (20) [sp+0xAC]  do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Guid]>
 ;* V06 loc4         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions]>
 ;* V07 loc5         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions]>
 ;* V08 loc6         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Type]>
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct (100) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T09] (  2,  4   )  struct (24) [sp+0xC8]  do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
+;  V10 tmp1         [V10,T08] (  2,  4   )  struct (24) [sp+0x90]  do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
 ;  V11 tmp2         [V11,T06] (  2,  4   )     ref  ->   r5         class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes>
-;  V12 tmp3         [V12,T01] (  3,  6   )  struct (24) [sp+0xB0]  do-not-enreg[S] double-align "impAppendStmt" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
+;  V12 tmp3         [V12,T01] (  3,  6   )  struct (24) [sp+0x78]  do-not-enreg[S] double-align "impAppendStmt" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
 ;* V13 tmp4         [V13    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
 ;* V14 tmp5         [V14    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
 ;* V15 tmp6         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
@@ -42,176 +42,147 @@
 ;* V31 tmp22        [V31    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V06._hasValue (fldOffset=0x4)" P-INDEP
 ;* V32 tmp23        [V32    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V07._value (fldOffset=0x0)" P-INDEP
 ;* V33 tmp24        [V33    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07._hasValue (fldOffset=0x4)" P-INDEP
-;* V34 tmp25        [V34,T16] (  0,  0   )     ref  ->  zero-ref    single-def "field V08._value (fldOffset=0x0)" P-INDEP
-;* V35 tmp26        [V35,T24] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08._hasValue (fldOffset=0x4)" P-INDEP
-;* V36 tmp27        [V36,T17] (  0,  0   )     ref  ->  zero-ref    single-def "field V13._value (fldOffset=0x0)" P-INDEP
-;* V37 tmp28        [V37,T25] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V13._hasValue (fldOffset=0x4)" P-INDEP
-;* V38 tmp29        [V38,T18] (  0,  0   )     ref  ->  zero-ref    single-def "field V14._value (fldOffset=0x0)" P-INDEP
-;* V39 tmp30        [V39,T26] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V14._hasValue (fldOffset=0x4)" P-INDEP
-;* V40 tmp31        [V40,T19] (  0,  0   )     ref  ->  zero-ref    single-def "field V15._value (fldOffset=0x0)" P-INDEP
-;* V41 tmp32        [V41,T27] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V15._hasValue (fldOffset=0x4)" P-INDEP
-;* V42 tmp33        [V42,T28] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V16._hasValue (fldOffset=0x0)" P-INDEP
-;* V43 tmp34        [V43,T20] (  0,  0   )     ref  ->  zero-ref    single-def "field V16._value (fldOffset=0x4)" P-INDEP
-;* V44 tmp35        [V44,T21] (  0,  0   )     ref  ->  zero-ref    single-def "field V17._value (fldOffset=0x0)" P-INDEP
-;* V45 tmp36        [V45,T29] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V17._hasValue (fldOffset=0x4)" P-INDEP
-;* V46 tmp37        [V46,T30] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V18._hasValue (fldOffset=0x0)" P-INDEP
-;* V47 tmp38        [V47,T31] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V18._value (fldOffset=0x1)" P-INDEP
-;* V48 tmp39        [V48,T32] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V19._hasValue (fldOffset=0x0)" P-INDEP
-;* V49 tmp40        [V49,T33] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V19._value (fldOffset=0x1)" P-INDEP
-;* V50 tmp41        [V50,T34] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V20._hasValue (fldOffset=0x0)" P-INDEP
-;* V51 tmp42        [V51,T35] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V20._value (fldOffset=0x1)" P-INDEP
-;* V52 tmp43        [V52,T22] (  0,  0   )     ref  ->  zero-ref    single-def "field V22._value (fldOffset=0x0)" P-INDEP
-;* V53 tmp44        [V53,T36] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V22._hasValue (fldOffset=0x4)" P-INDEP
-;* V54 tmp45        [V54,T23] (  0,  0   )     ref  ->  zero-ref    single-def "field V23._value (fldOffset=0x0)" P-INDEP
-;* V55 tmp46        [V55,T37] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V23._hasValue (fldOffset=0x4)" P-INDEP
+;* V34 tmp25        [V34,T10] (  0,  0   )     ref  ->  zero-ref    single-def "field V08._value (fldOffset=0x0)" P-INDEP
+;* V35 tmp26        [V35,T18] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08._hasValue (fldOffset=0x4)" P-INDEP
+;* V36 tmp27        [V36,T11] (  0,  0   )     ref  ->  zero-ref    single-def "field V13._value (fldOffset=0x0)" P-INDEP
+;* V37 tmp28        [V37,T19] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V13._hasValue (fldOffset=0x4)" P-INDEP
+;* V38 tmp29        [V38,T12] (  0,  0   )     ref  ->  zero-ref    single-def "field V14._value (fldOffset=0x0)" P-INDEP
+;* V39 tmp30        [V39,T20] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V14._hasValue (fldOffset=0x4)" P-INDEP
+;* V40 tmp31        [V40,T13] (  0,  0   )     ref  ->  zero-ref    single-def "field V15._value (fldOffset=0x0)" P-INDEP
+;* V41 tmp32        [V41,T21] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V15._hasValue (fldOffset=0x4)" P-INDEP
+;* V42 tmp33        [V42,T22] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V16._hasValue (fldOffset=0x0)" P-INDEP
+;* V43 tmp34        [V43,T14] (  0,  0   )     ref  ->  zero-ref    single-def "field V16._value (fldOffset=0x4)" P-INDEP
+;* V44 tmp35        [V44,T15] (  0,  0   )     ref  ->  zero-ref    single-def "field V17._value (fldOffset=0x0)" P-INDEP
+;* V45 tmp36        [V45,T23] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V17._hasValue (fldOffset=0x4)" P-INDEP
+;* V46 tmp37        [V46,T24] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V18._hasValue (fldOffset=0x0)" P-INDEP
+;* V47 tmp38        [V47,T25] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V18._value (fldOffset=0x1)" P-INDEP
+;* V48 tmp39        [V48,T26] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V19._hasValue (fldOffset=0x0)" P-INDEP
+;* V49 tmp40        [V49,T27] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V19._value (fldOffset=0x1)" P-INDEP
+;* V50 tmp41        [V50,T28] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V20._hasValue (fldOffset=0x0)" P-INDEP
+;* V51 tmp42        [V51,T29] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V20._value (fldOffset=0x1)" P-INDEP
+;* V52 tmp43        [V52,T16] (  0,  0   )     ref  ->  zero-ref    single-def "field V22._value (fldOffset=0x0)" P-INDEP
+;* V53 tmp44        [V53,T30] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V22._hasValue (fldOffset=0x4)" P-INDEP
+;* V54 tmp45        [V54,T17] (  0,  0   )     ref  ->  zero-ref    single-def "field V23._value (fldOffset=0x0)" P-INDEP
+;* V55 tmp46        [V55,T31] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V23._hasValue (fldOffset=0x4)" P-INDEP
 ;* V56 tmp47        [V56    ] (  0,  0   )   ubyte  ->  zero-ref    "V10.[000..001)"
-;  V57 tmp48        [V57,T02] (  3,  6   )  struct ( 4) [sp+0xAC]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-;  V58 tmp49        [V58,T03] (  3,  6   )  struct ( 4) [sp+0xA8]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-;  V59 tmp50        [V59,T04] (  3,  6   )  struct ( 4) [sp+0xA4]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-;  V60 tmp51        [V60,T08] (  2,  4   )     ref  ->   r5         single-def "argument with side effect"
-;  V61 tmp52        [V61,T10] (  2,  4   )  struct (24) [sp+0x88]  do-not-enreg[S] double-align "argument with side effect" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
-;* V62 tmp53        [V62    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-;  V63 tmp54        [V63,T13] (  1,  2   )  struct ( 8) [sp+0x80]  do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-;  V64 tmp55        [V64,T14] (  1,  2   )  struct ( 8) [sp+0x78]  do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-;  V65 tmp56        [V65,T15] (  1,  2   )  struct ( 8) [sp+0x70]  do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOutputInfo]>
-;  V66 tmp57        [V66,T11] (  2,  4   )  struct ( 8) [sp+0x68]  do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
+;  V57 tmp48        [V57,T02] (  3,  6   )  struct ( 4) [sp+0x74]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
+;  V58 tmp49        [V58,T03] (  3,  6   )  struct ( 4) [sp+0x70]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
+;  V59 tmp50        [V59,T04] (  3,  6   )  struct ( 4) [sp+0x6C]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
 ;
-; Lcl frame size = 252
+; Lcl frame size = 196
 
 G_M65141_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r2,r3}
             push    {r4,r5,r10,r11,lr}
-            sub     sp, 252
-            add     r11, sp, 264
-            sub     r3, r11, 160
-            movs    r1, 0
-            movs    r2, 0
-            stm     r3!, {r1,r2}
-            stm     r3!, {r1,r2}
-            stm     r3!, {r1,r2}
-            stm     r3!, {r1,r2}
+            sub     sp, 196
+            add     r11, sp, 208
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=30 bbWeight=1 PerfScore 12.00
+                       ;; size=14 bbWeight=1 PerfScore 5.00
 G_M65141_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             ldr     r5, [r4+0x04]
             ; gcrRegs +[r5]
-            ldr     r2, [sp+0x110]
-            str     r2, [sp+0xD0]
-            ldr     r2, [sp+0x114]
-            str     r2, [sp+0xD4]
-            ldr     r2, [sp+0x118]
-            str     r2, [sp+0xD8]
-            ldr     r2, [sp+0x11C]
-            str     r2, [sp+0xDC]
-            add     r0, sp, 176
+            ldr     r2, [sp+0xD8]
+            str     r2, [sp+0x98]
+            ldr     r2, [sp+0xDC]
+            str     r2, [sp+0x9C]
+            ldr     r2, [sp+0xE0]
+            str     r2, [sp+0xA0]
+            ldr     r2, [sp+0xE4]
+            str     r2, [sp+0xA4]
+            add     r0, sp, 120
             ; byrRegs +[r0]
-            add     r1, sp, 200
+            add     r1, sp, 144
             ; byrRegs +[r1]
             movs    r2, 24
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
             blx     r12        // CORINFO_HELP_MEMCPY
             ; byrRegs -[r0-r1]
-            movs    r2, 1
-            strb    r2, [sp+0xB0]
-            movs    r2, 0
-            str     r2, [sp+0xE4]
-            str     r2, [sp+0xE8]
-            str     r2, [sp+0xEC]
-            str     r2, [sp+0xF0]
-            str     r2, [sp+0xF4]
-            add     r0, sp, 136
-            ; byrRegs +[r0]
-            add     r1, sp, 176
-            ; byrRegs +[r1]
-            movs    r2, 24
-            movw    r12, 0xd1ff
-            movt    r12, 0xd1ff
-            blx     r12        // CORINFO_HELP_MEMCPY
-            ; byrRegs -[r0-r1]
-            movs    r0, 0
-            str     r0, [sp+0x10]
-                       ;; size=72 bbWeight=1 PerfScore 31.00
+            movs    r3, 1
+            strb    r3, [sp+0x78]
+            movs    r3, 0
+            str     r3, [sp+0xAC]
+            str     r3, [sp+0xB0]
+            str     r3, [sp+0xB4]
+            str     r3, [sp+0xB8]
+            str     r3, [sp+0xBC]
+                       ;; size=52 bbWeight=1 PerfScore 23.00
 G_M65141_IG03:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            str     r0, [sp+0x14]
+            str     r3, [sp+0x10]
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M65141_IG04:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            str     r0, [sp+0x18]
+            str     r3, [sp+0x14]
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M65141_IG05:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xAC]
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            str     r3, [sp+0x18]
+                       ;; size=2 bbWeight=1 PerfScore 1.00
 G_M65141_IG06:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xAD]
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            movs    r2, 0
+            str     r3, [sp+0x1C]
+            strb    r2, [sp+0x20]
+                       ;; size=8 bbWeight=1 PerfScore 3.00
 G_M65141_IG07:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xA8]
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            str     r3, [sp+0x24]
+            strb    r2, [sp+0x28]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M65141_IG08:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xA9]
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            str     r3, [sp+0x2C]
+            strb    r2, [sp+0x30]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M65141_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xA4]
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            strb    r3, [sp+0x34]
+            str     r2, [sp+0x38]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M65141_IG10:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xA5]
-            ldr     r0, [sp+0xE4]
-            str     r0, [sp+0x50]
-            ldr     r0, [sp+0xE8]
-            str     r0, [sp+0x54]
-            ldr     r0, [sp+0xEC]
-            str     r0, [sp+0x58]
-            ldr     r0, [sp+0xF0]
-            str     r0, [sp+0x5C]
-            ldr     r0, [sp+0xF4]
-            str     r0, [sp+0x60]
+            str     r3, [sp+0x3C]
+            strb    r2, [sp+0x40]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
+G_M65141_IG11:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x74]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG12:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x75]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG13:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x70]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG14:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x71]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG15:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x6C]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG16:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x6D]
+            ldr     r3, [sp+0xAC]
+            str     r3, [sp+0x50]
+            ldr     r3, [sp+0xB0]
+            str     r3, [sp+0x54]
+            ldr     r3, [sp+0xB4]
+            str     r3, [sp+0x58]
+            ldr     r3, [sp+0xB8]
+            str     r3, [sp+0x5C]
+            ldr     r3, [sp+0xBC]
+            str     r3, [sp+0x60]
+            ldrh    r3, [sp+0x70]
+            str     r3, [sp+0x48]
+            ldrh    r3, [sp+0x6C]
+            str     r3, [sp+0x4C]
...

-42 (-13.91%) : 48424.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)

@@ -9,18 +9,18 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  4   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.ProjectInfo>
-;  V01 arg1         [V01,T05] (  3,  3   )  struct (16) [sp+0x110]  do-not-enreg[S] single-def double-align <Microsoft.CodeAnalysis.VersionStamp>
+;  V01 arg1         [V01,T05] (  3,  3   )  struct (16) [sp+0xD8]  do-not-enreg[S] single-def double-align <Microsoft.CodeAnalysis.VersionStamp>
 ;* V02 loc0         [V02    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.String]>
 ;* V03 loc1         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOutputInfo]>
 ;* V04 loc2         [V04    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-;  V05 loc3         [V05,T12] (  2,  2   )  struct (20) [sp+0xE4]  do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Guid]>
+;  V05 loc3         [V05,T09] (  2,  2   )  struct (20) [sp+0xAC]  do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Guid]>
 ;* V06 loc4         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOptions]>
 ;* V07 loc5         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.ParseOptions]>
 ;* V08 loc6         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.Optional`1[System.Type]>
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct (100) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T09] (  2,  4   )  struct (24) [sp+0xC8]  do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
+;  V10 tmp1         [V10,T08] (  2,  4   )  struct (24) [sp+0x90]  do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
 ;  V11 tmp2         [V11,T06] (  2,  4   )     ref  ->   r5         class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.ProjectInfo+ProjectAttributes>
-;  V12 tmp3         [V12,T01] (  3,  6   )  struct (24) [sp+0xB0]  do-not-enreg[S] double-align "impAppendStmt" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
+;  V12 tmp3         [V12,T01] (  3,  6   )  struct (24) [sp+0x78]  do-not-enreg[S] double-align "impAppendStmt" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
 ;* V13 tmp4         [V13    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
 ;* V14 tmp5         [V14    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
 ;* V15 tmp6         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <Microsoft.CodeAnalysis.Optional`1[System.String]>
@@ -42,176 +42,147 @@
 ;* V31 tmp22        [V31    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V06._hasValue (fldOffset=0x4)" P-INDEP
 ;* V32 tmp23        [V32    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V07._value (fldOffset=0x0)" P-INDEP
 ;* V33 tmp24        [V33    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07._hasValue (fldOffset=0x4)" P-INDEP
-;* V34 tmp25        [V34,T16] (  0,  0   )     ref  ->  zero-ref    single-def "field V08._value (fldOffset=0x0)" P-INDEP
-;* V35 tmp26        [V35,T24] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08._hasValue (fldOffset=0x4)" P-INDEP
-;* V36 tmp27        [V36,T17] (  0,  0   )     ref  ->  zero-ref    single-def "field V13._value (fldOffset=0x0)" P-INDEP
-;* V37 tmp28        [V37,T25] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V13._hasValue (fldOffset=0x4)" P-INDEP
-;* V38 tmp29        [V38,T18] (  0,  0   )     ref  ->  zero-ref    single-def "field V14._value (fldOffset=0x0)" P-INDEP
-;* V39 tmp30        [V39,T26] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V14._hasValue (fldOffset=0x4)" P-INDEP
-;* V40 tmp31        [V40,T19] (  0,  0   )     ref  ->  zero-ref    single-def "field V15._value (fldOffset=0x0)" P-INDEP
-;* V41 tmp32        [V41,T27] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V15._hasValue (fldOffset=0x4)" P-INDEP
-;* V42 tmp33        [V42,T28] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V16._hasValue (fldOffset=0x0)" P-INDEP
-;* V43 tmp34        [V43,T20] (  0,  0   )     ref  ->  zero-ref    single-def "field V16._value (fldOffset=0x4)" P-INDEP
-;* V44 tmp35        [V44,T21] (  0,  0   )     ref  ->  zero-ref    single-def "field V17._value (fldOffset=0x0)" P-INDEP
-;* V45 tmp36        [V45,T29] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V17._hasValue (fldOffset=0x4)" P-INDEP
-;* V46 tmp37        [V46,T30] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V18._hasValue (fldOffset=0x0)" P-INDEP
-;* V47 tmp38        [V47,T31] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V18._value (fldOffset=0x1)" P-INDEP
-;* V48 tmp39        [V48,T32] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V19._hasValue (fldOffset=0x0)" P-INDEP
-;* V49 tmp40        [V49,T33] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V19._value (fldOffset=0x1)" P-INDEP
-;* V50 tmp41        [V50,T34] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V20._hasValue (fldOffset=0x0)" P-INDEP
-;* V51 tmp42        [V51,T35] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V20._value (fldOffset=0x1)" P-INDEP
-;* V52 tmp43        [V52,T22] (  0,  0   )     ref  ->  zero-ref    single-def "field V22._value (fldOffset=0x0)" P-INDEP
-;* V53 tmp44        [V53,T36] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V22._hasValue (fldOffset=0x4)" P-INDEP
-;* V54 tmp45        [V54,T23] (  0,  0   )     ref  ->  zero-ref    single-def "field V23._value (fldOffset=0x0)" P-INDEP
-;* V55 tmp46        [V55,T37] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V23._hasValue (fldOffset=0x4)" P-INDEP
+;* V34 tmp25        [V34,T10] (  0,  0   )     ref  ->  zero-ref    single-def "field V08._value (fldOffset=0x0)" P-INDEP
+;* V35 tmp26        [V35,T18] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08._hasValue (fldOffset=0x4)" P-INDEP
+;* V36 tmp27        [V36,T11] (  0,  0   )     ref  ->  zero-ref    single-def "field V13._value (fldOffset=0x0)" P-INDEP
+;* V37 tmp28        [V37,T19] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V13._hasValue (fldOffset=0x4)" P-INDEP
+;* V38 tmp29        [V38,T12] (  0,  0   )     ref  ->  zero-ref    single-def "field V14._value (fldOffset=0x0)" P-INDEP
+;* V39 tmp30        [V39,T20] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V14._hasValue (fldOffset=0x4)" P-INDEP
+;* V40 tmp31        [V40,T13] (  0,  0   )     ref  ->  zero-ref    single-def "field V15._value (fldOffset=0x0)" P-INDEP
+;* V41 tmp32        [V41,T21] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V15._hasValue (fldOffset=0x4)" P-INDEP
+;* V42 tmp33        [V42,T22] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V16._hasValue (fldOffset=0x0)" P-INDEP
+;* V43 tmp34        [V43,T14] (  0,  0   )     ref  ->  zero-ref    single-def "field V16._value (fldOffset=0x4)" P-INDEP
+;* V44 tmp35        [V44,T15] (  0,  0   )     ref  ->  zero-ref    single-def "field V17._value (fldOffset=0x0)" P-INDEP
+;* V45 tmp36        [V45,T23] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V17._hasValue (fldOffset=0x4)" P-INDEP
+;* V46 tmp37        [V46,T24] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V18._hasValue (fldOffset=0x0)" P-INDEP
+;* V47 tmp38        [V47,T25] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V18._value (fldOffset=0x1)" P-INDEP
+;* V48 tmp39        [V48,T26] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V19._hasValue (fldOffset=0x0)" P-INDEP
+;* V49 tmp40        [V49,T27] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V19._value (fldOffset=0x1)" P-INDEP
+;* V50 tmp41        [V50,T28] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V20._hasValue (fldOffset=0x0)" P-INDEP
+;* V51 tmp42        [V51,T29] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V20._value (fldOffset=0x1)" P-INDEP
+;* V52 tmp43        [V52,T16] (  0,  0   )     ref  ->  zero-ref    single-def "field V22._value (fldOffset=0x0)" P-INDEP
+;* V53 tmp44        [V53,T30] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V22._hasValue (fldOffset=0x4)" P-INDEP
+;* V54 tmp45        [V54,T17] (  0,  0   )     ref  ->  zero-ref    single-def "field V23._value (fldOffset=0x0)" P-INDEP
+;* V55 tmp46        [V55,T31] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V23._hasValue (fldOffset=0x4)" P-INDEP
 ;* V56 tmp47        [V56    ] (  0,  0   )   ubyte  ->  zero-ref    "V10.[000..001)"
-;  V57 tmp48        [V57,T02] (  3,  6   )  struct ( 4) [sp+0xAC]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-;  V58 tmp49        [V58,T03] (  3,  6   )  struct ( 4) [sp+0xA8]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-;  V59 tmp50        [V59,T04] (  3,  6   )  struct ( 4) [sp+0xA4]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
-;  V60 tmp51        [V60,T08] (  2,  4   )     ref  ->   r5         single-def "argument with side effect"
-;  V61 tmp52        [V61,T10] (  2,  4   )  struct (24) [sp+0x88]  do-not-enreg[S] double-align "argument with side effect" <System.Nullable`1[Microsoft.CodeAnalysis.VersionStamp]>
-;* V62 tmp53        [V62    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-;  V63 tmp54        [V63,T13] (  1,  2   )  struct ( 8) [sp+0x80]  do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-;  V64 tmp55        [V64,T14] (  1,  2   )  struct ( 8) [sp+0x78]  do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
-;  V65 tmp56        [V65,T15] (  1,  2   )  struct ( 8) [sp+0x70]  do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[Microsoft.CodeAnalysis.CompilationOutputInfo]>
-;  V66 tmp57        [V66,T11] (  2,  4   )  struct ( 8) [sp+0x68]  do-not-enreg[SF] must-init "argument with side effect" <Microsoft.CodeAnalysis.Optional`1[System.String]>
+;  V57 tmp48        [V57,T02] (  3,  6   )  struct ( 4) [sp+0x74]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
+;  V58 tmp49        [V58,T03] (  3,  6   )  struct ( 4) [sp+0x70]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
+;  V59 tmp50        [V59,T04] (  3,  6   )  struct ( 4) [sp+0x6C]  do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Optional`1[ubyte]>
 ;
-; Lcl frame size = 252
+; Lcl frame size = 196
 
 G_M65141_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r2,r3}
             push    {r4,r5,r10,r11,lr}
-            sub     sp, 252
-            add     r11, sp, 264
-            sub     r3, r11, 160
-            movs    r1, 0
-            movs    r2, 0
-            stm     r3!, {r1,r2}
-            stm     r3!, {r1,r2}
-            stm     r3!, {r1,r2}
-            stm     r3!, {r1,r2}
+            sub     sp, 196
+            add     r11, sp, 208
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=30 bbWeight=1 PerfScore 12.00
+                       ;; size=14 bbWeight=1 PerfScore 5.00
 G_M65141_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             ldr     r5, [r4+0x04]
             ; gcrRegs +[r5]
-            ldr     r2, [sp+0x110]
-            str     r2, [sp+0xD0]
-            ldr     r2, [sp+0x114]
-            str     r2, [sp+0xD4]
-            ldr     r2, [sp+0x118]
-            str     r2, [sp+0xD8]
-            ldr     r2, [sp+0x11C]
-            str     r2, [sp+0xDC]
-            add     r0, sp, 176
+            ldr     r2, [sp+0xD8]
+            str     r2, [sp+0x98]
+            ldr     r2, [sp+0xDC]
+            str     r2, [sp+0x9C]
+            ldr     r2, [sp+0xE0]
+            str     r2, [sp+0xA0]
+            ldr     r2, [sp+0xE4]
+            str     r2, [sp+0xA4]
+            add     r0, sp, 120
             ; byrRegs +[r0]
-            add     r1, sp, 200
+            add     r1, sp, 144
             ; byrRegs +[r1]
             movs    r2, 24
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
             blx     r12        // CORINFO_HELP_MEMCPY
             ; byrRegs -[r0-r1]
-            movs    r2, 1
-            strb    r2, [sp+0xB0]
-            movs    r2, 0
-            str     r2, [sp+0xE4]
-            str     r2, [sp+0xE8]
-            str     r2, [sp+0xEC]
-            str     r2, [sp+0xF0]
-            str     r2, [sp+0xF4]
-            add     r0, sp, 136
-            ; byrRegs +[r0]
-            add     r1, sp, 176
-            ; byrRegs +[r1]
-            movs    r2, 24
-            movw    r12, 0xd1ff
-            movt    r12, 0xd1ff
-            blx     r12        // CORINFO_HELP_MEMCPY
-            ; byrRegs -[r0-r1]
-            movs    r0, 0
-            str     r0, [sp+0x10]
-                       ;; size=72 bbWeight=1 PerfScore 31.00
+            movs    r3, 1
+            strb    r3, [sp+0x78]
+            movs    r3, 0
+            str     r3, [sp+0xAC]
+            str     r3, [sp+0xB0]
+            str     r3, [sp+0xB4]
+            str     r3, [sp+0xB8]
+            str     r3, [sp+0xBC]
+                       ;; size=52 bbWeight=1 PerfScore 23.00
 G_M65141_IG03:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            str     r0, [sp+0x14]
+            str     r3, [sp+0x10]
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M65141_IG04:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            str     r0, [sp+0x18]
+            str     r3, [sp+0x14]
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M65141_IG05:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xAC]
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            str     r3, [sp+0x18]
+                       ;; size=2 bbWeight=1 PerfScore 1.00
 G_M65141_IG06:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xAD]
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            movs    r2, 0
+            str     r3, [sp+0x1C]
+            strb    r2, [sp+0x20]
+                       ;; size=8 bbWeight=1 PerfScore 3.00
 G_M65141_IG07:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xA8]
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            str     r3, [sp+0x24]
+            strb    r2, [sp+0x28]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M65141_IG08:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xA9]
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            str     r3, [sp+0x2C]
+            strb    r2, [sp+0x30]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M65141_IG09:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xA4]
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            strb    r3, [sp+0x34]
+            str     r2, [sp+0x38]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M65141_IG10:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0xA5]
-            ldr     r0, [sp+0xE4]
-            str     r0, [sp+0x50]
-            ldr     r0, [sp+0xE8]
-            str     r0, [sp+0x54]
-            ldr     r0, [sp+0xEC]
-            str     r0, [sp+0x58]
-            ldr     r0, [sp+0xF0]
-            str     r0, [sp+0x5C]
-            ldr     r0, [sp+0xF4]
-            str     r0, [sp+0x60]
+            str     r3, [sp+0x3C]
+            strb    r2, [sp+0x40]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
+G_M65141_IG11:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x74]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG12:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x75]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG13:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x70]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG14:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x71]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG15:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x6C]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M65141_IG16:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
+            strb    r3, [sp+0x6D]
+            ldr     r3, [sp+0xAC]
+            str     r3, [sp+0x50]
+            ldr     r3, [sp+0xB0]
+            str     r3, [sp+0x54]
+            ldr     r3, [sp+0xB4]
+            str     r3, [sp+0x58]
+            ldr     r3, [sp+0xB8]
+            str     r3, [sp+0x5C]
+            ldr     r3, [sp+0xBC]
+            str     r3, [sp+0x60]
+            ldrh    r3, [sp+0x70]
+            str     r3, [sp+0x48]
+            ldrh    r3, [sp+0x6C]
+            str     r3, [sp+0x4C]
...

-46 (-13.14%) : 54718.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>cDisplayClass167_0:b5(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)

@@ -10,67 +10,64 @@
 ;
 ;  V00 this         [V00,T00] ( 10, 10   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0>
 ;  V01 RetBuf       [V01,T02] (  4,  4   )   byref  ->   r5         single-def
-;  V02 arg1         [V02,T08] (  4,  3.50)  struct (12) [sp+0x88]  do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+;  V02 arg1         [V02,T08] (  4,  3.50)  struct (12) [sp+0x78]  do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
 ;* V03 loc0         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;  V04 loc1         [V04,T09] (  6,  5   )     ref  ->   r7         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-;  V05 loc2         [V05,T25] (  2,  1.50)     int  ->   r1         single-def
+;  V05 loc2         [V05,T22] (  2,  1.50)     int  ->   r1         single-def
 ;* V06 loc3         [V06    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
 ;  V07 OutArgs      [V07    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V08 tmp1         [V08,T18] (  3,  3   )     ref  ->   r8         single-def
+;  V08 tmp1         [V08,T15] (  3,  3   )     ref  ->   r8         single-def
 ;* V09 tmp2         [V09    ] (  0,  0   )  struct ( 4) zero-ref    <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
 ;* V10 tmp3         [V10    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V11 tmp4         [V11    ] (  0,  0   )  struct ( 4) zero-ref    <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
 ;* V12 tmp5         [V12    ] (  0,  0   )  struct ( 4) zero-ref    single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
-;  V13 tmp6         [V13    ] (  1,  2   )  struct ( 8) [sp+0x58]  do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]>
+;  V13 tmp6         [V13    ] (  1,  2   )  struct ( 8) [sp+0x48]  do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]>
 ;  V14 tmp7         [V14,T03] (  4,  6   )     ref  ->   r3         class-hnd single-def "dup spill" <System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
 ;* V15 tmp8         [V15    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V16 tmp9         [V16,T10] (  6,  4.50)     ref  ->   r6         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;  V17 tmp10        [V17,T04] (  4,  6   )     ref  ->   r0         class-hnd single-def "dup spill" <<unknown class>>
 ;* V18 tmp11        [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V19 tmp12        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V20 tmp13        [V20    ] (  4,  4   )  struct ( 8) [sp+0x50]  do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+;  V20 tmp13        [V20    ] (  4,  4   )  struct ( 8) [sp+0x40]  do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
 ;  V21 tmp14        [V21,T05] (  3,  6   )     ref  ->   r7         class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker>
 ;  V22 tmp15        [V22,T11] (  2,  4   )     ref  ->   r8         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase>
-;  V23 tmp16        [V23    ] (  4,  8   )  struct ( 8) [sp+0x48]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+;  V23 tmp16        [V23    ] (  4,  8   )  struct ( 8) [sp+0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
 ;* V24 tmp17        [V24    ] (  0,  0   )  struct ( 8) zero-ref    "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
 ;* V25 tmp18        [V25    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
-;  V26 tmp19        [V26    ] (  2,  4   )  struct (12) [sp+0x3C]  do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-;  V27 tmp20        [V27,T01] (  4,  8   )  struct (20) [sp+0x28]  do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+;  V26 tmp19        [V26    ] (  2,  4   )  struct (12) [sp+0x2C]  do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+;  V27 tmp20        [V27,T01] (  4,  8   )  struct (20) [sp+0x18]  do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
 ;* V28 tmp21        [V28    ] (  0,  0   )  struct ( 4) zero-ref    "Inlining Arg" <System.Nullable`1[ubyte]>
 ;* V29 tmp22        [V29    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V06.array (fldOffset=0x0)" P-INDEP
-;  V30 tmp23        [V30,T20] (  2,  2   )     ref  ->   r9         single-def "field V09.array (fldOffset=0x0)" P-INDEP
+;  V30 tmp23        [V30,T17] (  2,  2   )     ref  ->   r9         single-def "field V09.array (fldOffset=0x0)" P-INDEP
 ;* V31 tmp24        [V31    ] (  0,  0   )     ref  ->  zero-ref    "field V11.array (fldOffset=0x0)" P-INDEP
-;  V32 tmp25        [V32,T19] (  3,  2   )     ref  ->   r3         single-def "field V12.array (fldOffset=0x0)" P-INDEP
-;  V33 tmp26        [V33,T23] (  1,  2   )     ref  ->  [sp+0x58]  do-not-enreg[H] hidden-struct-arg "field V13.Item1 (fldOffset=0x0)" P-DEP
-;  V34 tmp27        [V34,T24] (  1,  2   )   ubyte  ->  [sp+0x5C]  do-not-enreg[H] hidden-struct-arg "field V13.Item2 (fldOffset=0x4)" P-DEP
-;  V35 tmp28        [V35    ] (  3,  3   )     ref  ->  [sp+0x50]  do-not-enreg[X] addr-exposed "field V20.Type (fldOffset=0x0)" P-DEP
-;  V36 tmp29        [V36    ] (  3,  3   )   ubyte  ->  [sp+0x54]  do-not-enreg[X] addr-exposed "field V20.State (fldOffset=0x4)" P-DEP
-;  V37 tmp30        [V37    ] (  3,  5   )     ref  ->  [sp+0x48]  do-not-enreg[X] addr-exposed "field V23.Type (fldOffset=0x0)" P-DEP
-;  V38 tmp31        [V38    ] (  3,  5   )   ubyte  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V23.State (fldOffset=0x4)" P-DEP
-;  V39 tmp32        [V39,T21] (  2,  2   )     ref  ->   r4         single-def "field V24.Type (fldOffset=0x0)" P-INDEP
-;  V40 tmp33        [V40,T22] (  2,  2   )   ubyte  ->   r6         single-def "field V24.State (fldOffset=0x4)" P-INDEP
+;  V32 tmp25        [V32,T16] (  3,  2   )     ref  ->   r3         single-def "field V12.array (fldOffset=0x0)" P-INDEP
+;  V33 tmp26        [V33,T20] (  1,  2   )     ref  ->  [sp+0x48]  do-not-enreg[H] hidden-struct-arg "field V13.Item1 (fldOffset=0x0)" P-DEP
+;  V34 tmp27        [V34,T21] (  1,  2   )   ubyte  ->  [sp+0x4C]  do-not-enreg[H] hidden-struct-arg "field V13.Item2 (fldOffset=0x4)" P-DEP
+;  V35 tmp28        [V35    ] (  3,  3   )     ref  ->  [sp+0x40]  do-not-enreg[X] addr-exposed "field V20.Type (fldOffset=0x0)" P-DEP
+;  V36 tmp29        [V36    ] (  3,  3   )   ubyte  ->  [sp+0x44]  do-not-enreg[X] addr-exposed "field V20.State (fldOffset=0x4)" P-DEP
+;  V37 tmp30        [V37    ] (  3,  5   )     ref  ->  [sp+0x38]  do-not-enreg[X] addr-exposed "field V23.Type (fldOffset=0x0)" P-DEP
+;  V38 tmp31        [V38    ] (  3,  5   )   ubyte  ->  [sp+0x3C]  do-not-enreg[X] addr-exposed "field V23.State (fldOffset=0x4)" P-DEP
+;  V39 tmp32        [V39,T18] (  2,  2   )     ref  ->   r4         single-def "field V24.Type (fldOffset=0x0)" P-INDEP
+;  V40 tmp33        [V40,T19] (  2,  2   )   ubyte  ->   r6         single-def "field V24.State (fldOffset=0x4)" P-INDEP
 ;* V41 tmp34        [V41    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V25.hasValue (fldOffset=0x0)" P-INDEP
 ;* V42 tmp35        [V42    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V25.value (fldOffset=0x1)" P-INDEP
-;  V43 tmp36        [V43,T12] (  2,  4   )     ref  ->  [sp+0x3C]  do-not-enreg[H] hidden-struct-arg "field V26.DefaultType (fldOffset=0x0)" P-DEP
-;  V44 tmp37        [V44,T13] (  2,  4   )     ref  ->  [sp+0x40]  do-not-enreg[H] hidden-struct-arg "field V26._extensions (fldOffset=0x4)" P-DEP
-;  V45 tmp38        [V45,T16] (  2,  4   )   ubyte  ->  [sp+0x44]  do-not-enreg[H] hidden-struct-arg "field V26.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP
-;* V46 tmp39        [V46,T26] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V28.hasValue (fldOffset=0x0)" P-INDEP
-;* V47 tmp40        [V47,T27] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V28.value (fldOffset=0x1)" P-INDEP
-;  V48 tmp41        [V48,T07] (  3,  6   )  struct ( 4) [sp+0x24]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;  V49 tmp42        [V49,T14] (  2,  4   )     ref  ->   r7         single-def "argument with side effect"
-;  V50 tmp43        [V50,T15] (  2,  4   )     ref  ->   r8         single-def "argument with side effect"
-;  V51 tmp44        [V51,T17] (  2,  4   )  struct (20) [sp+0x10]  do-not-enreg[S] must-init single-def "argument with side effect" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
-;  V52 rat0         [V52,T06] (  3,  6   )     ref  ->   r3         "delegate invoke call"
+;  V43 tmp36        [V43,T12] (  2,  4   )     ref  ->  [sp+0x2C]  do-not-enreg[H] hidden-struct-arg "field V26.DefaultType (fldOffset=0x0)" P-DEP
+;  V44 tmp37        [V44,T13] (  2,  4   )     ref  ->  [sp+0x30]  do-not-enreg[H] hidden-struct-arg "field V26._extensions (fldOffset=0x4)" P-DEP
+;  V45 tmp38        [V45,T14] (  2,  4   )   ubyte  ->  [sp+0x34]  do-not-enreg[H] hidden-struct-arg "field V26.DefaultNullableAnnotation (fldOffset=0x8)" P-DEP
+;* V46 tmp39        [V46,T23] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V28.hasValue (fldOffset=0x0)" P-INDEP
+;* V47 tmp40        [V47,T24] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V28.value (fldOffset=0x1)" P-INDEP
+;  V48 tmp41        [V48,T07] (  3,  6   )  struct ( 4) [sp+0x14]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+;  V49 rat0         [V49,T06] (  3,  6   )     ref  ->   r3         "delegate invoke call"
 ;
-; Lcl frame size = 100
+; Lcl frame size = 84
 
 G_M54131_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r2,r3}
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 100
-            add     r11, sp, 128
-            sub     r4, r11, 112
-            movs    r5, 10
+            sub     sp, 84
+            add     r11, sp, 112
+            sub     r4, r11, 88
+            movs    r5, 7
             movs    r2, 0
             movs    r3, 0
             stm     r4!, {r2,r3}
@@ -82,7 +79,7 @@ G_M54131_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; byrRegs +[r5]
                        ;; size=32 bbWeight=1 PerfScore 13.00
 G_M54131_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
-            ldr     r0, [sp+0x8C]
+            ldr     r0, [sp+0x7C]
             ; gcrRegs +[r0]
             cmp     r0, 0
             bne     SHORT G_M54131_IG04
@@ -94,7 +91,7 @@ G_M54131_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5},
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M54131_IG04:        ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref
             ; gcrRegs +[r0]
-            ldr     r1, [sp+0x88]
+            ldr     r1, [sp+0x78]
             ; gcrRegs +[r1]
             ldr     r3, [r0]
             ldr     r3, [r3+0x2C]
@@ -142,7 +139,7 @@ G_M54131_IG07:        ; bbWeight=0.50, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
 G_M54131_IG08:        ; bbWeight=1, gcrefRegs=03D8 {r3 r4 r6 r7 r8 r9}, byrefRegs=0020 {r5}, byref, isz
             ; gcrRegs -[r0]
             str     r7, [sp]
-            add     r1, sp, 88
+            add     r1, sp, 72
             mov     r2, r9
             ; gcrRegs +[r2]
             ldr     r0, [r8+0x04]
@@ -184,7 +181,7 @@ G_M54131_IG10:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5},
             ldr     r8, [r4+0x04]
             ; gcrRegs +[r8]
             ldrb    r2, [r4+0x18]
-            add     r0, sp, 80
+            add     r0, sp, 64
             mov     r1, r6
             ; gcrRegs +[r1]
             movw    r3, 0xd1ff
@@ -194,86 +191,66 @@ G_M54131_IG10:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5},
             ; gcrRegs -[r1 r4 r6]
                        ;; size=24 bbWeight=1 PerfScore 9.00
 G_M54131_IG11:        ; bbWeight=1, nogc, extend
-            ldr     r2, [sp+0x50]
-            str     r2, [sp+0x48]
-            ldr     r2, [sp+0x54]
-            str     r2, [sp+0x4C]
+            ldr     r2, [sp+0x40]
+            str     r2, [sp+0x38]
+            ldr     r2, [sp+0x44]
+            str     r2, [sp+0x3C]
                        ;; size=8 bbWeight=1 PerfScore 4.00
 G_M54131_IG12:        ; bbWeight=1, extend
-            ldr     r4, [sp+0x48]
+            ldr     r4, [sp+0x38]
             ; gcrRegs +[r4]
-            ldrb    r6, [sp+0x4C]
+            ldrb    r6, [sp+0x3C]
             ldr     r2, [r7+0x04]
             ; gcrRegs +[r2]
-            add     r1, sp, 60
-            add     r0, sp, 72
+            add     r1, sp, 44
+            add     r0, sp, 56
             movs    r3, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r2]
-            str     r4, [sp+0x28]
-            strb    r6, [sp+0x2C]
+            str     r4, [sp+0x18]
+            strb    r6, [sp+0x1C]
                        ;; size=34 bbWeight=1 PerfScore 12.00
 G_M54131_IG13:        ; bbWeight=1, nogc, extend
-            ldr     r0, [sp+0x3C]
-            str     r0, [sp+0x30]
-            ldr     r0, [sp+0x40]
-            str     r0, [sp+0x34]
-            ldr     r0, [sp+0x44]
-            str     r0, [sp+0x38]
+            ldr     r3, [sp+0x2C]
+            str     r3, [sp+0x20]
+            ldr     r3, [sp+0x30]
+            str     r3, [sp+0x24]
+            ldr     r3, [sp+0x34]
+            str     r3, [sp+0x28]
                        ;; size=12 bbWeight=1 PerfScore 6.00
 G_M54131_IG14:        ; bbWeight=1, extend
-            add     r0, sp, 16
-            ; byrRegs +[r0]
-            add     r1, sp, 40
-            ; byrRegs +[r1]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs +[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs -[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs +[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs -[r2]
-            str     r2, [r0!+0x04]
-            movs    r0, 0
-            ; byrRegs -[r0]
-            strb    r0, [sp+0x24]
-                       ;; size=50 bbWeight=1 PerfScore 14.00
+            movs    r3, 0
+            strb    r3, [sp+0x14]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M54131_IG15:        ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0020 {r5}, byref
             ; gcrRegs -[r4]
-            ; byrRegs -[r1]
-            strb    r0, [sp+0x25]
-            mov     r0, r7
-            ; gcrRegs +[r0]
-            mov     r1, r8
-            ; gcrRegs +[r1]
-            ldr     r2, [sp+0x18]
+            strb    r3, [sp+0x15]
+            ldrh    r3, [sp+0x14]
+            str     r3, [sp+0x0C]
+            ldr     r2, [sp+0x20]
             ; gcrRegs +[r2]
             str     r2, [sp]
-            ldr     r2, [sp+0x1C]
+            ldr     r2, [sp+0x24]
             str     r2, [sp+0x04]
-            ldr     r2, [sp+0x20]
+            ldr     r2, [sp+0x28]
             ; gcrRegs -[r2]
             str     r2, [sp+0x08]
-            ldr     r2, [sp+0x10]
+            ldr     r2, [sp+0x18]
             ; gcrRegs +[r2]
-            ldr     r3, [sp+0x14]
-            ldrh    lr, [sp+0x24]
-            str     lr, [sp+0x0C]
+            ldr     r3, [sp+0x1C]
+            mov     r1, r8
+            ; gcrRegs +[r1]
+            mov     r0, r7
+            ; gcrRegs +[r0]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0-r2 r7-r8]
-            ldr     r1, [sp+0x50]
+            ldr     r1, [sp+0x40]
...

+16 (+10.96%) : 45767.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)

@@ -8,33 +8,31 @@
 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T03] (  2,  4   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp3         [V05,T05] (  4,  3.50)     ref  ->   r1        
-;  V06 tmp4         [V06,T02] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-;  V07 tmp5         [V07,T07] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7         [V09,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
-;  V10 tmp8         [V10,T01] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9         [V11,T08] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V12 tmp10        [V12,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;  V13 cse0         [V13,T06] (  4,  3   )     int  ->   r5         "CSE - aggressive"
+;  V05 tmp3         [V05,T04] (  4,  3.50)     ref  ->   r1        
+;  V06 tmp4         [V06,T01] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+;  V07 tmp5         [V07,T05] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
+;  V10 tmp8         [V10,T00] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M22152_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M22152_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r5, 0xd1ff
-            movt    r5, 0xd1ff
-            ldr     r1, [r5]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            ldr     r1, [r0]
             ; gcrRegs +[r1]
             cmp     r1, 0
             bne     SHORT G_M22152_IG04
@@ -51,12 +49,14 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs +[r1]
             str     r1, [sp]
             ; GC ptr vars +{V06}
-            ldr     r3, [r5-0x2C]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movt    r0, 0xd1ff
+            ldr     r3, [r0]
             ; gcrRegs +[r3]
             cmp     r3, 0
             beq     SHORT G_M22152_IG07
             adds    r0, r1, 4
-            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             mov     r1, r3
             movw    r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r2, [sp]
             ; gcrRegs +[r2]
             str     r1, [r2+0x0C]
-            mov     r0, r5
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
             mov     r1, r2
             ; gcrRegs +[r1]
             movw    r12, 0xd1ff
@@ -78,18 +79,18 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=72 bbWeight=0.50 PerfScore 12.50
+                       ;; size=84 bbWeight=0.50 PerfScore 14.00
 G_M22152_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r2]
             ; GC ptr vars -{V06}
-            movs    r0, 0
-            strb    r0, [sp+0x04]
+            movs    r3, 0
+            strb    r3, [sp+0x04]
                        ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG05:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0x05]
+            strb    r3, [sp+0x05]
+            ldrh    r3, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldrh    r3, [sp+0x04]
             movs    r2, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -98,8 +99,9 @@ G_M22152_IG05:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1 r4]
                        ;; size=26 bbWeight=1 PerfScore 8.00
 G_M22152_IG06:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r0]
             movw    r3, 0xd1ff
@@ -109,7 +111,7 @@ G_M22152_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 146, prolog size 8, PerfScore 31.50, instruction count 49, allocated bytes for code 146 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 162, prolog size 10, PerfScore 35.00, instruction count 54, allocated bytes for code 162 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -121,7 +123,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 73 (0x00049) Actual length = 146 (0x000092)
+  Function Length   : 81 (0x00051) Actual length = 162 (0x0000a2)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +131,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

+16 (+10.96%) : 52475.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)

@@ -8,33 +8,31 @@
 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T03] (  2,  4   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp3         [V05,T05] (  4,  3.50)     ref  ->   r1        
-;  V06 tmp4         [V06,T02] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-;  V07 tmp5         [V07,T07] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7         [V09,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
-;  V10 tmp8         [V10,T01] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9         [V11,T08] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V12 tmp10        [V12,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;  V13 cse0         [V13,T06] (  4,  3   )     int  ->   r5         "CSE - aggressive"
+;  V05 tmp3         [V05,T04] (  4,  3.50)     ref  ->   r1        
+;  V06 tmp4         [V06,T01] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+;  V07 tmp5         [V07,T05] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
+;  V10 tmp8         [V10,T00] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M22152_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M22152_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r5, 0xd1ff
-            movt    r5, 0xd1ff
-            ldr     r1, [r5]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            ldr     r1, [r0]
             ; gcrRegs +[r1]
             cmp     r1, 0
             bne     SHORT G_M22152_IG04
@@ -51,12 +49,14 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs +[r1]
             str     r1, [sp]
             ; GC ptr vars +{V06}
-            ldr     r3, [r5-0x2C]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movt    r0, 0xd1ff
+            ldr     r3, [r0]
             ; gcrRegs +[r3]
             cmp     r3, 0
             beq     SHORT G_M22152_IG07
             adds    r0, r1, 4
-            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             mov     r1, r3
             movw    r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r2, [sp]
             ; gcrRegs +[r2]
             str     r1, [r2+0x0C]
-            mov     r0, r5
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
             mov     r1, r2
             ; gcrRegs +[r1]
             movw    r12, 0xd1ff
@@ -78,18 +79,18 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=72 bbWeight=0.50 PerfScore 12.50
+                       ;; size=84 bbWeight=0.50 PerfScore 14.00
 G_M22152_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r2]
             ; GC ptr vars -{V06}
-            movs    r0, 0
-            strb    r0, [sp+0x04]
+            movs    r3, 0
+            strb    r3, [sp+0x04]
                        ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG05:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0x05]
+            strb    r3, [sp+0x05]
+            ldrh    r3, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldrh    r3, [sp+0x04]
             movs    r2, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -98,8 +99,9 @@ G_M22152_IG05:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1 r4]
                        ;; size=26 bbWeight=1 PerfScore 8.00
 G_M22152_IG06:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r0]
             movw    r3, 0xd1ff
@@ -109,7 +111,7 @@ G_M22152_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 146, prolog size 8, PerfScore 31.50, instruction count 49, allocated bytes for code 146 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 162, prolog size 10, PerfScore 35.00, instruction count 54, allocated bytes for code 162 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -121,7 +123,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 73 (0x00049) Actual length = 146 (0x000092)
+  Function Length   : 81 (0x00051) Actual length = 162 (0x0000a2)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +131,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

+16 (+10.96%) : 5392.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)

@@ -8,33 +8,31 @@
 ; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T03] (  2,  4   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp3         [V05,T05] (  4,  3.50)     ref  ->   r1        
-;  V06 tmp4         [V06,T02] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-;  V07 tmp5         [V07,T07] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7         [V09,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
-;  V10 tmp8         [V10,T01] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9         [V11,T08] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V12 tmp10        [V12,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;  V13 cse0         [V13,T06] (  4,  3   )     int  ->   r5         "CSE - aggressive"
+;  V05 tmp3         [V05,T04] (  4,  3.50)     ref  ->   r1        
+;  V06 tmp4         [V06,T01] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+;  V07 tmp5         [V07,T05] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
+;  V10 tmp8         [V10,T00] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M22152_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M22152_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r5, 0xd1ff
-            movt    r5, 0xd1ff
-            ldr     r1, [r5]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            ldr     r1, [r0]
             ; gcrRegs +[r1]
             cmp     r1, 0
             bne     SHORT G_M22152_IG04
@@ -51,12 +49,14 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs +[r1]
             str     r1, [sp]
             ; GC ptr vars +{V06}
-            ldr     r3, [r5-0x2C]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movt    r0, 0xd1ff
+            ldr     r3, [r0]
             ; gcrRegs +[r3]
             cmp     r3, 0
             beq     SHORT G_M22152_IG07
             adds    r0, r1, 4
-            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             mov     r1, r3
             movw    r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r2, [sp]
             ; gcrRegs +[r2]
             str     r1, [r2+0x0C]
-            mov     r0, r5
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
             mov     r1, r2
             ; gcrRegs +[r1]
             movw    r12, 0xd1ff
@@ -78,18 +79,18 @@ G_M22152_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=72 bbWeight=0.50 PerfScore 12.50
+                       ;; size=84 bbWeight=0.50 PerfScore 14.00
 G_M22152_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r2]
             ; GC ptr vars -{V06}
-            movs    r0, 0
-            strb    r0, [sp+0x04]
+            movs    r3, 0
+            strb    r3, [sp+0x04]
                        ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG05:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0x05]
+            strb    r3, [sp+0x05]
+            ldrh    r3, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldrh    r3, [sp+0x04]
             movs    r2, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -98,8 +99,9 @@ G_M22152_IG05:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1 r4]
                        ;; size=26 bbWeight=1 PerfScore 8.00
 G_M22152_IG06:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r0]
             movw    r3, 0xd1ff
@@ -109,7 +111,7 @@ G_M22152_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 146, prolog size 8, PerfScore 31.50, instruction count 49, allocated bytes for code 146 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 162, prolog size 10, PerfScore 35.00, instruction count 54, allocated bytes for code 162 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -121,7 +123,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 73 (0x00049) Actual length = 146 (0x000092)
+  Function Length   : 81 (0x00051) Actual length = 162 (0x0000a2)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -129,7 +131,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

realworld.run.linux.arm.checked.mch

-46 (-20.00%) : 30725.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:g_visitMethodGroupArgument|2782(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)

@@ -11,41 +11,38 @@
 ;  V00 this         [V00,T00] (  6,  6   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
 ;  V01 arg1         [V01,T03] (  4,  4   )     ref  ->   r6         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression>
 ;  V02 arg2         [V02,T05] (  3,  3   )     ref  ->   r7         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol>
-;  V03 arg3         [V03,T01] (  5,  5   )     ref  ->   r5         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundMethodGroup>
+;  V03 arg3         [V03,T02] (  5,  5   )     ref  ->   r5         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundMethodGroup>
 ;* V04 loc0         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06    ] (  3,  6   )  struct ( 8) [sp+0x48]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+;  V06 tmp1         [V06    ] (  3,  6   )  struct ( 8) [sp+0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
 ;* V07 tmp2         [V07    ] (  0,  0   )  struct ( 8) zero-ref    "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
 ;* V08 tmp3         [V08    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
-;  V09 tmp4         [V09    ] (  2,  4   )  struct (12) [sp+0x3C]  do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-;  V10 tmp5         [V10,T02] (  4,  8   )  struct (20) [sp+0x28]  do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+;  V09 tmp4         [V09    ] (  2,  4   )  struct (12) [sp+0x2C]  do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+;  V10 tmp5         [V10,T01] (  4,  8   )  struct (20) [sp+0x18]  do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
 ;* V11 tmp6         [V11    ] (  0,  0   )  struct ( 4) zero-ref    "Inlining Arg" <System.Nullable`1[ubyte]>
 ;* V12 tmp7         [V12    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V04.Type (fldOffset=0x0)" P-INDEP
 ;* V13 tmp8         [V13    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V04.State (fldOffset=0x4)" P-INDEP
-;  V14 tmp9         [V14    ] (  2,  3   )     ref  ->  [sp+0x48]  do-not-enreg[X] addr-exposed "field V06.Type (fldOffset=0x0)" P-DEP
-;  V15 tmp10        [V15    ] (  2,  3   )   ubyte  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V06.State (fldOffset=0x4)" P-DEP
-;  V16 tmp11        [V16,T10] (  2,  2   )     ref  ->   r8         single-def "field V07.Type (fldOffset=0x0)" P-INDEP
-;  V17 tmp12        [V17,T11] (  2,  2   )   ubyte  ->   r9         single-def "field V07.State (fldOffset=0x4)" P-INDEP
+;  V14 tmp9         [V14    ] (  2,  3   )     ref  ->  [sp+0x38]  do-not-enreg[X] addr-exposed "field V06.Type (fldOffset=0x0)" P-DEP
+;  V15 tmp10        [V15    ] (  2,  3   )   ubyte  ->  [sp+0x3C]  do-not-enreg[X] addr-exposed "field V06.State (fldOffset=0x4)" P-DEP
+;  V16 tmp11        [V16,T09] (  2,  2   )     ref  ->   r8         single-def "field V07.Type (fldOffset=0x0)" P-INDEP
+;  V17 tmp12        [V17,T10] (  2,  2   )   ubyte  ->   r9         single-def "field V07.State (fldOffset=0x4)" P-INDEP
 ;* V18 tmp13        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP
 ;* V19 tmp14        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V08.value (fldOffset=0x1)" P-INDEP
-;  V20 tmp15        [V20,T06] (  2,  4   )     ref  ->  [sp+0x3C]  do-not-enreg[H] hidden-struct-arg "field V09.DefaultType (fldOffset=0x0)" P-DEP
-;  V21 tmp16        [V21,T07] (  2,  4   )     ref  ->  [sp+0x40]  do-not-enreg[H] hidden-struct-arg "field V09._extensions (fldOffset=0x4)" P-DEP
-;  V22 tmp17        [V22,T08] (  2,  4   )   ubyte  ->  [sp+0x44]  do-not-enreg[H] hidden-struct-arg "field V09.NullableAnnotation (fldOffset=0x8)" P-DEP
-;* V23 tmp18        [V23,T14] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V11.hasValue (fldOffset=0x0)" P-INDEP
-;* V24 tmp19        [V24,T15] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V11.value (fldOffset=0x1)" P-INDEP
-;  V25 tmp20        [V25,T04] (  3,  6   )  struct ( 4) [sp+0x24]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V26 tmp21        [V26,T12] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V27 tmp22        [V27,T13] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V28 tmp23        [V28,T09] (  2,  4   )  struct (20) [sp+0x10]  do-not-enreg[S] must-init single-def "argument with side effect" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+;  V20 tmp15        [V20,T06] (  2,  4   )     ref  ->  [sp+0x2C]  do-not-enreg[H] hidden-struct-arg "field V09.DefaultType (fldOffset=0x0)" P-DEP
+;  V21 tmp16        [V21,T07] (  2,  4   )     ref  ->  [sp+0x30]  do-not-enreg[H] hidden-struct-arg "field V09._extensions (fldOffset=0x4)" P-DEP
+;  V22 tmp17        [V22,T08] (  2,  4   )   ubyte  ->  [sp+0x34]  do-not-enreg[H] hidden-struct-arg "field V09.NullableAnnotation (fldOffset=0x8)" P-DEP
+;* V23 tmp18        [V23,T11] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V11.hasValue (fldOffset=0x0)" P-INDEP
+;* V24 tmp19        [V24,T12] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V11.value (fldOffset=0x1)" P-INDEP
+;  V25 tmp20        [V25,T04] (  3,  6   )  struct ( 4) [sp+0x14]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 80
+; Lcl frame size = 64
 
 G_M59414_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r6,r7,r8,r9,r11,lr}
-            sub     sp, 80
-            add     r11, sp, 104
-            sub     r6, r11, 88
-            movs    r7, 8
+            sub     sp, 64
+            add     r11, sp, 88
+            sub     r6, r11, 64
+            movs    r7, 5
             movs    r4, 0
             movs    r5, 0
             stm     r6!, {r4,r5}
@@ -71,13 +68,13 @@ G_M59414_IG02:        ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
             ldr     r2, [r0]
             blx     r3     // Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitMethodGroup(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):Microsoft.CodeAnalysis.CSharp.BoundNode:this
             ; gcrRegs -[r1]
-            ldr     r8, [sp+0x48]
+            ldr     r8, [sp+0x38]
             ; gcrRegs +[r8]
-            ldrb    r9, [sp+0x4C]
+            ldrb    r9, [sp+0x3C]
             ldr     r2, [r4+0x04]
             ; gcrRegs +[r2]
-            add     r1, sp, 60
-            add     r0, sp, 72
+            add     r1, sp, 44
+            add     r0, sp, 56
             ; gcrRegs -[r0]
             movs    r3, 0
             movw    lr, 0xd1ff
@@ -85,61 +82,41 @@ G_M59414_IG02:        ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r2]
-            str     r8, [sp+0x28]
-            strb    r9, [sp+0x2C]
+            str     r8, [sp+0x18]
+            strb    r9, [sp+0x1C]
                        ;; size=56 bbWeight=1 PerfScore 19.00
 G_M59414_IG03:        ; bbWeight=1, nogc, extend
-            ldr     r0, [sp+0x3C]
-            str     r0, [sp+0x30]
-            ldr     r0, [sp+0x40]
-            str     r0, [sp+0x34]
-            ldr     r0, [sp+0x44]
-            str     r0, [sp+0x38]
+            ldr     r3, [sp+0x2C]
+            str     r3, [sp+0x20]
+            ldr     r3, [sp+0x30]
+            str     r3, [sp+0x24]
+            ldr     r3, [sp+0x34]
+            str     r3, [sp+0x28]
                        ;; size=12 bbWeight=1 PerfScore 6.00
 G_M59414_IG04:        ; bbWeight=1, extend
-            add     r0, sp, 16
-            ; byrRegs +[r0]
-            add     r1, sp, 40
-            ; byrRegs +[r1]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs +[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs -[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs +[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs -[r2]
-            str     r2, [r0!+0x04]
-            movs    r0, 0
-            ; byrRegs -[r0]
-            strb    r0, [sp+0x24]
-                       ;; size=50 bbWeight=1 PerfScore 14.00
+            movs    r3, 0
+            strb    r3, [sp+0x14]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M59414_IG05:        ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r8]
-            ; byrRegs -[r1]
-            strb    r0, [sp+0x25]
-            mov     r0, r4
-            ; gcrRegs +[r0]
-            mov     r1, r5
-            ; gcrRegs +[r1]
-            ldr     r2, [sp+0x18]
+            strb    r3, [sp+0x15]
+            ldrh    r3, [sp+0x14]
+            str     r3, [sp+0x0C]
+            ldr     r2, [sp+0x20]
             ; gcrRegs +[r2]
             str     r2, [sp]
-            ldr     r2, [sp+0x1C]
+            ldr     r2, [sp+0x24]
             str     r2, [sp+0x04]
-            ldr     r2, [sp+0x20]
+            ldr     r2, [sp+0x28]
             ; gcrRegs -[r2]
             str     r2, [sp+0x08]
-            ldr     r2, [sp+0x10]
+            ldr     r2, [sp+0x18]
             ; gcrRegs +[r2]
-            ldr     r3, [sp+0x14]
-            ldrh    lr, [sp+0x24]
-            str     lr, [sp+0x0C]
+            ldr     r3, [sp+0x1C]
+            mov     r1, r5
+            ; gcrRegs +[r1]
+            mov     r0, r4
+            ; gcrRegs +[r0]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
@@ -160,13 +137,13 @@ G_M59414_IG05:        ; bbWeight=1, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000
             ldr     lr, [lr]
             blx     lr     // Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__analyzeMethodGroupConversion|278_3(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,ubyte):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this
             ; gcrRegs -[r1-r7]
-                       ;; size=72 bbWeight=1 PerfScore 27.00
+                       ;; size=70 bbWeight=1 PerfScore 27.00
 G_M59414_IG06:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 80
+            add     sp, 64
             pop     {r4,r5,r6,r7,r8,r9,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 230, prolog size 26, PerfScore 82.00, instruction count 82, allocated bytes for code 230 (MethodHash=5db917e9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
+; Total bytes of code 184, prolog size 26, PerfScore 70.00, instruction count 70, allocated bytes for code 184 (MethodHash=5db917e9) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -178,11 +155,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 115 (0x00073) Actual length = 230 (0x0000e6)
+  Function Length   : 92 (0x0005c) Actual length = 184 (0x0000b8)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    14          add sp, sp, #80                     ; opsize 16
+    10          add sp, sp, #64                     ; opsize 16
     AB F0       pop {r4,r5,r6,r7,r8,r9,r11,lr}      ; opsize 32
     FF          end
 

-42 (-17.80%) : 14165.dasm - (dynamicClass):ILSTUBCallTailCallTarget(int,byref,int) (FullOpts)

@@ -8,41 +8,36 @@
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] ( 14, 14   )     int  ->   r0         single-def
-;  V01 arg1         [V01,T06] (  3,  3   )   byref  ->   r4         single-def
-;  V02 arg2         [V02,T03] (  4,  4   )     int  ->   r2         single-def
+;  V01 arg1         [V01,T05] (  3,  3   )   byref  ->   r4         single-def
+;  V02 arg2         [V02,T02] (  4,  4   )     int  ->   r2         single-def
 ;* V03 loc0         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <<unknown class>>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (28) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T15] (  2,  4   )     int  ->   r1         "impAppendStmt"
-;  V06 tmp2         [V06,T07] (  2,  4   )     ref  ->   r2         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V07 tmp3         [V07,T08] (  2,  4   )     ref  ->   r3         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V08 tmp4         [V08,T09] (  2,  4   )     ref  ->   lr         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V05 tmp1         [V05,T11] (  2,  4   )     int  ->   lr         "impAppendStmt"
+;  V06 tmp2         [V06,T06] (  2,  4   )     ref  ->   r1         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V07 tmp3         [V07,T07] (  2,  4   )     ref  ->   r2         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V08 tmp4         [V08,T08] (  2,  4   )     ref  ->   r3         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V09 tmp5         [V09    ] (  0,  0   )  struct (16) zero-ref    double-align "impAppendStmt" <FSharp.Compiler.Text.Range>
 ;* V10 tmp6         [V10    ] (  0,  0   )  struct ( 4) zero-ref    "impAppendStmt" <FSharp.Compiler.ParseHelpers+LexerStringKind>
-;  V11 tmp7         [V11,T10] (  2,  4   )     ref  ->   r7         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V12 tmp8         [V12,T11] (  2,  4   )     ref  ->   r8         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V13 tmp9         [V13,T17] (  3,  3   )    long  ->  [sp+0x48]  do-not-enreg[F] "field V09.code1 (fldOffset=0x0)" P-INDEP
-;  V14 tmp10        [V14,T18] (  3,  3   )    long  ->  [sp+0x40]  do-not-enreg[F] "field V09.code2 (fldOffset=0x8)" P-INDEP
-;  V15 tmp11        [V15,T19] (  2,  2   )   ubyte  ->  r12         "field V10.IsByteString@ (fldOffset=0x0)" P-INDEP
-;  V16 tmp12        [V16,T20] (  2,  2   )   ubyte  ->   r5         "field V10.IsInterpolated@ (fldOffset=0x1)" P-INDEP
-;  V17 tmp13        [V17,T21] (  2,  2   )   ubyte  ->   r6         "field V10.IsInterpolatedFirst@ (fldOffset=0x2)" P-INDEP
-;  V18 tmp14        [V18,T02] (  4,  8   )  struct ( 4) [sp+0x3C]  do-not-enreg[SF] "by-value struct argument" <FSharp.Compiler.ParseHelpers+LexerStringKind>
-;  V19 tmp15        [V19,T16] (  2,  4   )     int  ->   r0         "argument with side effect"
-;  V20 tmp16        [V20,T12] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;  V21 tmp17        [V21,T13] (  2,  4   )     ref  ->   r2         single-def "argument with side effect"
-;  V22 tmp18        [V22,T14] (  2,  4   )     ref  ->   r3         single-def "argument with side effect"
-;  V23 tmp19        [V23,T01] (  5, 10   )  struct (16) [sp+0x28]  do-not-enreg[SF] double-align "argument with side effect" <FSharp.Compiler.Text.Range>
-;  V24 rat0         [V24,T04] (  3,  6   )     int  ->  r12         "ReplaceWithLclVar is creating a new local variable"
-;  V25 rat1         [V25,T05] (  3,  6   )     int  ->  r12         "ReplaceWithLclVar is creating a new local variable"
-;  TEMP_01                                     ref  ->  [r11-0x44]
+;  V11 tmp7         [V11,T09] (  2,  4   )     ref  ->   r7         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V12 tmp8         [V12,T10] (  2,  4   )     ref  ->   r8         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V13 tmp9         [V13,T12] (  3,  3   )    long  ->  [sp+0x38]  do-not-enreg[F] "field V09.code1 (fldOffset=0x0)" P-INDEP
+;  V14 tmp10        [V14,T13] (  3,  3   )    long  ->  [sp+0x30]  do-not-enreg[F] "field V09.code2 (fldOffset=0x8)" P-INDEP
+;  V15 tmp11        [V15,T14] (  2,  2   )   ubyte  ->  r12         "field V10.IsByteString@ (fldOffset=0x0)" P-INDEP
+;  V16 tmp12        [V16,T15] (  2,  2   )   ubyte  ->   r5         "field V10.IsInterpolated@ (fldOffset=0x1)" P-INDEP
+;  V17 tmp13        [V17,T16] (  2,  2   )   ubyte  ->  [sp+0x2C]  spill-single-def "field V10.IsInterpolatedFirst@ (fldOffset=0x2)" P-INDEP
+;  V18 tmp14        [V18,T01] (  4,  8   )  struct ( 4) [sp+0x28]  do-not-enreg[SF] "by-value struct argument" <FSharp.Compiler.ParseHelpers+LexerStringKind>
+;  V19 rat0         [V19,T03] (  3,  6   )     int  ->  r12         "ReplaceWithLclVar is creating a new local variable"
+;  V20 rat1         [V20,T04] (  3,  6   )     int  ->  r12         "ReplaceWithLclVar is creating a new local variable"
+;  TEMP_01                                     ref  ->  [r11-0x3C]
 ;
-; Lcl frame size = 80
+; Lcl frame size = 68
 
 G_M50245_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r4,r5,r6,r7,r8,r9,r11,lr}
-            sub     sp, 80
-            add     r11, sp, 104
+            push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
+            sub     sp, 68
+            add     r11, sp, 96
             movs    r3, 0
-            str     r3, [sp+0x24]
+            str     r3, [sp+0x24]  // [TEMP_01]
             mov     r4, r1
             ; byrRegs +[r4]
                        ;; size=16 bbWeight=1 PerfScore 6.00
@@ -52,70 +47,59 @@ G_M50245_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byre
             movw    r1, LOW ADDRESS G_M50245_IG03
             movt    r1, HIGH ADDRESS G_M50245_IG03
             str     r1, [r2]
-            ldrb    r1, [r0+0x0C]
-            ldr     r2, [r0+0x10]
+            ldrb    lr, [r0+0x0C]
+            ldr     r1, [r0+0x10]
+            ; gcrRegs +[r1]
+            ldr     r2, [r0+0x14]
             ; gcrRegs +[r2]
-            ldr     r3, [r0+0x14]
+            ldr     r3, [r0+0x18]
             ; gcrRegs +[r3]
-            ldr     lr, [r0+0x18]
-            ; gcrRegs +[lr]
             add     r12, r0, 32
             ldr     r5, [r12]
             ldr     r12, [r12+0x04]
-            str     r5, [sp+0x48]
-            str     r12, [sp+0x4C]
+            str     r5, [sp+0x38]
+            str     r12, [sp+0x3C]
             add     r12, r0, 40
             ldr     r5, [r12]
             ldr     r12, [r12+0x04]
-            str     r5, [sp+0x40]
-            str     r12, [sp+0x44]
+            str     r5, [sp+0x30]
+            str     r12, [sp+0x34]
             ldrb    r12, [r0+0x30]
             ldrb    r5, [r0+0x31]
             ldrb    r6, [r0+0x32]
+            strb    r6, [sp+0x2C]  // [V17 tmp13]
             ldr     r7, [r0+0x34]
             ; gcrRegs +[r7]
             ldr     r8, [r0+0x38]
             ; gcrRegs +[r8]
             mov     r9, 2
             str     r9, [r0]
-            mov     r0, r1
-            mov     r1, r2
-            ; gcrRegs +[r1]
-            mov     r2, r3
-            mov     r3, lr
-            ldr     lr, [sp+0x48]
-            ; gcrRegs -[lr]
-            ldr     r9, [sp+0x4C]
-            str     lr, [sp+0x28]
-            str     r9, [sp+0x2C]
-            ldr     lr, [sp+0x40]
-            ldr     r9, [sp+0x44]
-            str     lr, [sp+0x30]
-            str     r9, [sp+0x34]
-            strb    r12, [sp+0x3C]
-            strb    r5, [sp+0x3D]
-            strb    r6, [sp+0x3E]
-            str     r7, [sp+0x14]
-            str     r8, [sp+0x18]
-            ldr     lr, [sp+0x28]
-            str     lr, [sp]
-            ldr     lr, [sp+0x2C]
-            str     lr, [sp+0x04]
-            ldr     lr, [sp+0x30]
-            str     lr, [sp+0x08]
-            ldr     lr, [sp+0x34]
-            str     lr, [sp+0x0C]
-            ldr     lr, [sp+0x3C]
-            str     lr, [sp+0x10]
+            ldr     r0, [sp+0x38]  // [V13 tmp9]
+            ldr     r9, [sp+0x3C]  // [V13 tmp9+0x04]
+            ldr     r10, [sp+0x30] // [V14 tmp10]
+            ldr     r6, [sp+0x34]  // [V14 tmp10+0x04]
+            str     r0, [sp]   // [V04 OutArgs]
+            str     r9, [sp+0x04]  // [V04 OutArgs+0x04]
+            str     r10, [sp+0x08] // [V04 OutArgs+0x08]
+            str     r6, [sp+0x0C]  // [V04 OutArgs+0x0c]
+            strb    r12, [sp+0x28] // [V18 tmp14]
+            strb    r5, [sp+0x29]  // [V18 tmp14+0x01]
+            ldrb    r6, [sp+0x2C]  // [V17 tmp13]
+            strb    r6, [sp+0x2A]  // [V18 tmp14+0x02]
+            str     r7, [sp+0x14]  // [V04 OutArgs+0x14]
+            str     r8, [sp+0x18]  // [V04 OutArgs+0x18]
+            ldr     r0, [sp+0x28]  // [V18 tmp14]
+            str     r0, [sp+0x10]  // [V04 OutArgs+0x10]
+            mov     r0, lr
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r1-r3 r7-r8] +[r0]
-                       ;; size=198 bbWeight=1 PerfScore 57.00
+                       ;; size=156 bbWeight=1 PerfScore 48.00
 G_M50245_IG03:        ; bbWeight=1, extend
-            str     r0, [sp+0x24]
-            ldr     r1, [sp+0x24]
+            str     r0, [sp+0x24]  // [TEMP_01]
+            ldr     r1, [sp+0x24]  // [TEMP_01]
             ; gcrRegs +[r1]
             mov     r0, r4
             ; gcrRegs -[r0]
@@ -127,11 +111,11 @@ G_M50245_IG03:        ; bbWeight=1, extend
             ; byrRegs -[r0 r4]
                        ;; size=16 bbWeight=1 PerfScore 6.00
 G_M50245_IG04:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 80
-            pop     {r4,r5,r6,r7,r8,r9,r11,pc}
+            add     sp, 68
+            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 236, prolog size 14, PerfScore 71.00, instruction count 71, allocated bytes for code 236 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
+; Total bytes of code 194, prolog size 14, PerfScore 62.00, instruction count 62, allocated bytes for code 194 (MethodHash=c0f83bba) for method (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -143,11 +127,12 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 118 (0x00076) Actual length = 236 (0x0000ec)
+  Function Length   : 97 (0x00061) Actual length = 194 (0x0000c2)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    14          add sp, sp, #80                     ; opsize 16
-    AB F0       pop {r4,r5,r6,r7,r8,r9,r11,lr}      ; opsize 32
+    11          add sp, sp, #68                     ; opsize 16
+    DF          pop {r4,r5,r6,r7,r8,r9,r10,r11,lr}  ; opsize 32
+    FF          end
     FF          end
 

-46 (-12.78%) : 29395.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>cDisplayClass167_0:b5(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)

@@ -10,70 +10,67 @@
 ;
 ;  V00 this         [V00,T00] ( 11, 11   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0>
 ;  V01 RetBuf       [V01,T02] (  4,  4   )   byref  ->   r5         single-def
-;  V02 arg1         [V02,T09] (  4,  3.50)  struct (12) [sp+0x88]  do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+;  V02 arg1         [V02,T09] (  4,  3.50)  struct (12) [sp+0x78]  do-not-enreg[SF] ld-addr-op single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
 ;* V03 loc0         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;  V04 loc1         [V04,T10] (  6,  5   )     ref  ->   r7         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-;  V05 loc2         [V05,T26] (  2,  1.50)     int  ->   r1         single-def
+;  V05 loc2         [V05,T23] (  2,  1.50)     int  ->   r1         single-def
 ;* V06 loc3         [V06    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
 ;  V07 OutArgs      [V07    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V08 tmp1         [V08    ] (  0,  0   )  struct ( 4) zero-ref    "location for address-of(RValue)" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-;  V09 tmp2         [V09,T19] (  3,  3   )     ref  ->   r8         single-def
+;  V09 tmp2         [V09,T16] (  3,  3   )     ref  ->   r8         single-def
 ;* V10 tmp3         [V10    ] (  0,  0   )  struct ( 4) zero-ref    <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
 ;* V11 tmp4         [V11    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V12 tmp5         [V12    ] (  0,  0   )  struct ( 4) zero-ref    <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult]>
 ;* V13 tmp6         [V13    ] (  0,  0   )  struct ( 4) zero-ref    single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol]>
-;  V14 tmp7         [V14    ] (  1,  2   )  struct ( 8) [sp+0x58]  do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]>
+;  V14 tmp7         [V14    ] (  1,  2   )  struct ( 8) [sp+0x48]  do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]>
 ;  V15 tmp8         [V15,T03] (  4,  6   )     ref  ->   r3         class-hnd single-def "dup spill" <System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]>
 ;* V16 tmp9         [V16    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V17 tmp10        [V17,T11] (  6,  4.50)     ref  ->   r6         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
 ;  V18 tmp11        [V18,T04] (  4,  6   )     ref  ->   r0         class-hnd single-def "dup spill" <<unknown class>>
 ;* V19 tmp12        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V20 tmp13        [V20    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V21 tmp14        [V21    ] (  4,  4   )  struct ( 8) [sp+0x50]  do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+;  V21 tmp14        [V21    ] (  4,  4   )  struct ( 8) [sp+0x40]  do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
 ;  V22 tmp15        [V22,T05] (  3,  6   )     ref  ->   r7         class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.NullableWalker>
 ;  V23 tmp16        [V23,T12] (  2,  4   )     ref  ->   r8         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase>
-;  V24 tmp17        [V24    ] (  4,  8   )  struct ( 8) [sp+0x48]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
+;  V24 tmp17        [V24    ] (  4,  8   )  struct ( 8) [sp+0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
 ;* V25 tmp18        [V25    ] (  0,  0   )  struct ( 8) zero-ref    "non-inline candidate call" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState>
 ;* V26 tmp19        [V26    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[ubyte]>
-;  V27 tmp20        [V27    ] (  2,  4   )  struct (12) [sp+0x3C]  do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-;  V28 tmp21        [V28,T01] (  4,  8   )  struct (20) [sp+0x28]  do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
+;  V27 tmp20        [V27    ] (  2,  4   )  struct (12) [sp+0x2C]  do-not-enreg[HS] must-init hidden-struct-arg "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+;  V28 tmp21        [V28,T01] (  4,  8   )  struct (20) [sp+0x18]  do-not-enreg[S] must-init ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
 ;* V29 tmp22        [V29    ] (  0,  0   )  struct ( 4) zero-ref    "Inlining Arg" <System.Nullable`1[ubyte]>
 ;* V30 tmp23        [V30    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V06.array (fldOffset=0x0)" P-INDEP
 ;* V31 tmp24        [V31    ] (  0,  0   )     ref  ->  zero-ref    "field V08.array (fldOffset=0x0)" P-INDEP
-;  V32 tmp25        [V32,T21] (  2,  2   )     ref  ->   r9         single-def "field V10.array (fldOffset=0x0)" P-INDEP
+;  V32 tmp25        [V32,T18] (  2,  2   )     ref  ->   r9         single-def "field V10.array (fldOffset=0x0)" P-INDEP
 ;* V33 tmp26        [V33    ] (  0,  0   )     ref  ->  zero-ref    "field V12.array (fldOffset=0x0)" P-INDEP
-;  V34 tmp27        [V34,T20] (  3,  2   )     ref  ->   r3         single-def "field V13.array (fldOffset=0x0)" P-INDEP
-;  V35 tmp28        [V35,T24] (  1,  2   )     ref  ->  [sp+0x58]  do-not-enreg[H] hidden-struct-arg "field V14.Item1 (fldOffset=0x0)" P-DEP
-;  V36 tmp29        [V36,T25] (  1,  2   )   ubyte  ->  [sp+0x5C]  do-not-enreg[H] hidden-struct-arg "field V14.Item2 (fldOffset=0x4)" P-DEP
-;  V37 tmp30        [V37    ] (  3,  3   )     ref  ->  [sp+0x50]  do-not-enreg[X] addr-exposed "field V21.Type (fldOffset=0x0)" P-DEP
-;  V38 tmp31        [V38    ] (  3,  3   )   ubyte  ->  [sp+0x54]  do-not-enreg[X] addr-exposed "field V21.State (fldOffset=0x4)" P-DEP
-;  V39 tmp32        [V39    ] (  3,  5   )     ref  ->  [sp+0x48]  do-not-enreg[X] addr-exposed "field V24.Type (fldOffset=0x0)" P-DEP
-;  V40 tmp33        [V40    ] (  3,  5   )   ubyte  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V24.State (fldOffset=0x4)" P-DEP
-;  V41 tmp34        [V41,T22] (  2,  2   )     ref  ->   r4         single-def "field V25.Type (fldOffset=0x0)" P-INDEP
-;  V42 tmp35        [V42,T23] (  2,  2   )   ubyte  ->   r6         single-def "field V25.State (fldOffset=0x4)" P-INDEP
+;  V34 tmp27        [V34,T17] (  3,  2   )     ref  ->   r3         single-def "field V13.array (fldOffset=0x0)" P-INDEP
+;  V35 tmp28        [V35,T21] (  1,  2   )     ref  ->  [sp+0x48]  do-not-enreg[H] hidden-struct-arg "field V14.Item1 (fldOffset=0x0)" P-DEP
+;  V36 tmp29        [V36,T22] (  1,  2   )   ubyte  ->  [sp+0x4C]  do-not-enreg[H] hidden-struct-arg "field V14.Item2 (fldOffset=0x4)" P-DEP
+;  V37 tmp30        [V37    ] (  3,  3   )     ref  ->  [sp+0x40]  do-not-enreg[X] addr-exposed "field V21.Type (fldOffset=0x0)" P-DEP
+;  V38 tmp31        [V38    ] (  3,  3   )   ubyte  ->  [sp+0x44]  do-not-enreg[X] addr-exposed "field V21.State (fldOffset=0x4)" P-DEP
+;  V39 tmp32        [V39    ] (  3,  5   )     ref  ->  [sp+0x38]  do-not-enreg[X] addr-exposed "field V24.Type (fldOffset=0x0)" P-DEP
+;  V40 tmp33        [V40    ] (  3,  5   )   ubyte  ->  [sp+0x3C]  do-not-enreg[X] addr-exposed "field V24.State (fldOffset=0x4)" P-DEP
+;  V41 tmp34        [V41,T19] (  2,  2   )     ref  ->   r4         single-def "field V25.Type (fldOffset=0x0)" P-INDEP
+;  V42 tmp35        [V42,T20] (  2,  2   )   ubyte  ->   r6         single-def "field V25.State (fldOffset=0x4)" P-INDEP
 ;* V43 tmp36        [V43    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V26.hasValue (fldOffset=0x0)" P-INDEP
 ;* V44 tmp37        [V44    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V26.value (fldOffset=0x1)" P-INDEP
-;  V45 tmp38        [V45,T13] (  2,  4   )     ref  ->  [sp+0x3C]  do-not-enreg[H] hidden-struct-arg "field V27.DefaultType (fldOffset=0x0)" P-DEP
-;  V46 tmp39        [V46,T14] (  2,  4   )     ref  ->  [sp+0x40]  do-not-enreg[H] hidden-struct-arg "field V27._extensions (fldOffset=0x4)" P-DEP
-;  V47 tmp40        [V47,T17] (  2,  4   )   ubyte  ->  [sp+0x44]  do-not-enreg[H] hidden-struct-arg "field V27.NullableAnnotation (fldOffset=0x8)" P-DEP
-;* V48 tmp41        [V48,T27] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V29.hasValue (fldOffset=0x0)" P-INDEP
-;* V49 tmp42        [V49,T28] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V29.value (fldOffset=0x1)" P-INDEP
+;  V45 tmp38        [V45,T13] (  2,  4   )     ref  ->  [sp+0x2C]  do-not-enreg[H] hidden-struct-arg "field V27.DefaultType (fldOffset=0x0)" P-DEP
+;  V46 tmp39        [V46,T14] (  2,  4   )     ref  ->  [sp+0x30]  do-not-enreg[H] hidden-struct-arg "field V27._extensions (fldOffset=0x4)" P-DEP
+;  V47 tmp40        [V47,T15] (  2,  4   )   ubyte  ->  [sp+0x34]  do-not-enreg[H] hidden-struct-arg "field V27.NullableAnnotation (fldOffset=0x8)" P-DEP
+;* V48 tmp41        [V48,T24] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V29.hasValue (fldOffset=0x0)" P-INDEP
+;* V49 tmp42        [V49,T25] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V29.value (fldOffset=0x1)" P-INDEP
 ;  V50 tmp43        [V50,T06] (  3,  6   )     ref  ->   r0         single-def "argument with side effect"
-;  V51 tmp44        [V51,T08] (  3,  6   )  struct ( 4) [sp+0x24]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;  V52 tmp45        [V52,T15] (  2,  4   )     ref  ->   r7         single-def "argument with side effect"
-;  V53 tmp46        [V53,T16] (  2,  4   )     ref  ->   r8         single-def "argument with side effect"
-;  V54 tmp47        [V54,T18] (  2,  4   )  struct (20) [sp+0x10]  do-not-enreg[S] must-init single-def "argument with side effect" <Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitResult>
-;  V55 rat0         [V55,T07] (  3,  6   )     ref  ->   r3         "delegate invoke call"
+;  V51 tmp44        [V51,T08] (  3,  6   )  struct ( 4) [sp+0x14]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+;  V52 rat0         [V52,T07] (  3,  6   )     ref  ->   r3         "delegate invoke call"
 ;
-; Lcl frame size = 100
+; Lcl frame size = 84
 
 G_M54131_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r2,r3}
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 100
-            add     r11, sp, 128
-            sub     r4, r11, 112
-            movs    r5, 10
+            sub     sp, 84
+            add     r11, sp, 112
+            sub     r4, r11, 88
+            movs    r5, 7
             movs    r2, 0
             movs    r3, 0
             stm     r4!, {r2,r3}
@@ -91,7 +88,7 @@ G_M54131_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by
             ldr     r3, [r3+0x30]
             ldr     r3, [r3+0x1C]
             blx     r3     // <unknown method>
-            ldr     r0, [sp+0x8C]
+            ldr     r0, [sp+0x7C]
             cmp     r0, 0
             bne     SHORT G_M54131_IG04
                        ;; size=16 bbWeight=1 PerfScore 8.00
@@ -102,7 +99,7 @@ G_M54131_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5},
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M54131_IG04:        ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref
             ; gcrRegs +[r0]
-            ldr     r1, [sp+0x88]
+            ldr     r1, [sp+0x78]
             ; gcrRegs +[r1]
             ldr     r3, [r0]
             ldr     r3, [r3+0x2C]
@@ -150,7 +147,7 @@ G_M54131_IG07:        ; bbWeight=0.50, gcrefRegs=03D0 {r4 r6 r7 r8 r9}, byrefReg
 G_M54131_IG08:        ; bbWeight=1, gcrefRegs=03D8 {r3 r4 r6 r7 r8 r9}, byrefRegs=0020 {r5}, byref, isz
             ; gcrRegs -[r0]
             str     r7, [sp]
-            add     r1, sp, 88
+            add     r1, sp, 72
             mov     r2, r9
             ; gcrRegs +[r2]
             ldr     r0, [r8+0x04]
@@ -192,7 +189,7 @@ G_M54131_IG10:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5},
             ldr     r8, [r4+0x04]
             ; gcrRegs +[r8]
             ldrb    r2, [r4+0x18]
-            add     r0, sp, 80
+            add     r0, sp, 64
             mov     r1, r6
             ; gcrRegs +[r1]
             movw    r3, 0xd1ff
@@ -202,86 +199,66 @@ G_M54131_IG10:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0020 {r5},
             ; gcrRegs -[r1 r4 r6]
                        ;; size=24 bbWeight=1 PerfScore 9.00
 G_M54131_IG11:        ; bbWeight=1, nogc, extend
-            ldr     r2, [sp+0x50]
-            str     r2, [sp+0x48]
-            ldr     r2, [sp+0x54]
-            str     r2, [sp+0x4C]
+            ldr     r2, [sp+0x40]
+            str     r2, [sp+0x38]
+            ldr     r2, [sp+0x44]
+            str     r2, [sp+0x3C]
                        ;; size=8 bbWeight=1 PerfScore 4.00
 G_M54131_IG12:        ; bbWeight=1, extend
-            ldr     r4, [sp+0x48]
+            ldr     r4, [sp+0x38]
             ; gcrRegs +[r4]
-            ldrb    r6, [sp+0x4C]
+            ldrb    r6, [sp+0x3C]
             ldr     r2, [r7+0x04]
             ; gcrRegs +[r2]
-            add     r1, sp, 60
-            add     r0, sp, 72
+            add     r1, sp, 44
+            add     r0, sp, 56
             movs    r3, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r2]
-            str     r4, [sp+0x28]
-            strb    r6, [sp+0x2C]
+            str     r4, [sp+0x18]
+            strb    r6, [sp+0x1C]
                        ;; size=34 bbWeight=1 PerfScore 12.00
 G_M54131_IG13:        ; bbWeight=1, nogc, extend
-            ldr     r0, [sp+0x3C]
-            str     r0, [sp+0x30]
-            ldr     r0, [sp+0x40]
-            str     r0, [sp+0x34]
-            ldr     r0, [sp+0x44]
-            str     r0, [sp+0x38]
+            ldr     r3, [sp+0x2C]
+            str     r3, [sp+0x20]
+            ldr     r3, [sp+0x30]
+            str     r3, [sp+0x24]
+            ldr     r3, [sp+0x34]
+            str     r3, [sp+0x28]
                        ;; size=12 bbWeight=1 PerfScore 6.00
 G_M54131_IG14:        ; bbWeight=1, extend
-            add     r0, sp, 16
-            ; byrRegs +[r0]
-            add     r1, sp, 40
-            ; byrRegs +[r1]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs +[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs -[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs +[r2]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            str     r2, [r0!+0x04]
-            ldr     r2, [r1!+0x04]
-            ; gcrRegs -[r2]
-            str     r2, [r0!+0x04]
-            movs    r0, 0
-            ; byrRegs -[r0]
-            strb    r0, [sp+0x24]
-                       ;; size=50 bbWeight=1 PerfScore 14.00
+            movs    r3, 0
+            strb    r3, [sp+0x14]
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M54131_IG15:        ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0020 {r5}, byref
             ; gcrRegs -[r4]
-            ; byrRegs -[r1]
-            strb    r0, [sp+0x25]
-            mov     r0, r7
-            ; gcrRegs +[r0]
-            mov     r1, r8
-            ; gcrRegs +[r1]
-            ldr     r2, [sp+0x18]
+            strb    r3, [sp+0x15]
+            ldrh    r3, [sp+0x14]
+            str     r3, [sp+0x0C]
+            ldr     r2, [sp+0x20]
             ; gcrRegs +[r2]
             str     r2, [sp]
-            ldr     r2, [sp+0x1C]
+            ldr     r2, [sp+0x24]
             str     r2, [sp+0x04]
-            ldr     r2, [sp+0x20]
+            ldr     r2, [sp+0x28]
             ; gcrRegs -[r2]
             str     r2, [sp+0x08]
-            ldr     r2, [sp+0x10]
+            ldr     r2, [sp+0x18]
             ; gcrRegs +[r2]
-            ldr     r3, [sp+0x14]
-            ldrh    lr, [sp+0x24]
-            str     lr, [sp+0x0C]
+            ldr     r3, [sp+0x1C]
+            mov     r1, r8
+            ; gcrRegs +[r1]
+            mov     r0, r7
+            ; gcrRegs +[r0]
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
...

+2 (+2.33%) : 3539.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan1[ubyte],System.Span1[ushort],ubyte):int:this (FullOpts)

@@ -11,28 +11,25 @@
 ;  V00 this         [V00,T00] (  4,  4   )     ref  ->   r0         this class-hnd single-def <System.Text.Decoder>
 ;  V01 arg1         [V01,T01] (  4,  4   )  struct ( 8) [sp+0x1C]  do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
 ;  V02 arg2         [V02,T02] (  4,  4   )  struct ( 8) [sp+0x24]  do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ushort]>
-;  V03 arg3         [V03,T15] (  1,  1   )   ubyte  ->  [sp+0x2C]  single-def
+;  V03 arg3         [V03,T12] (  1,  1   )   ubyte  ->  [sp+0x2C]  single-def
 ;* V04 loc0         [V04    ] (  0,  0   )     int  ->  zero-ref   
 ;  V05 loc1         [V05    ] (  1,  1   )   byref  ->  [sp+0x0C]  must-init pinned single-def
 ;* V06 loc2         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;  V07 loc3         [V07    ] (  1,  1   )   byref  ->  [sp+0x08]  must-init pinned single-def
 ;  V08 OutArgs      [V08    ] (  1,  1   )  struct ( 8) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V09 tmp1         [V09,T08] (  4,  3   )   byref  ->   lr         "Inline return value spill temp"
+;  V09 tmp1         [V09,T06] (  4,  3   )   byref  ->   r1         "Inline return value spill temp"
 ;* V10 tmp2         [V10    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;  V11 tmp3         [V11,T09] (  4,  3   )   byref  ->   r3         "Inline return value spill temp"
+;  V11 tmp3         [V11,T07] (  4,  3   )   byref  ->  r12         "Inline return value spill temp"
 ;* V12 tmp4         [V12    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-;  V13 tmp5         [V13,T13] (  2,  1.50)   byref  ->   r3         single-def "field V10._reference (fldOffset=0x0)" P-INDEP
+;  V13 tmp5         [V13,T10] (  2,  1.50)   byref  ->   r1         single-def "field V10._reference (fldOffset=0x0)" P-INDEP
 ;* V14 tmp6         [V14    ] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x4)" P-INDEP
-;  V15 tmp7         [V15,T14] (  2,  1.50)   byref  ->   r3         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;  V15 tmp7         [V15,T11] (  2,  1.50)   byref  ->   lr         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
 ;* V16 tmp8         [V16    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x4)" P-INDEP
-;  V17 tmp9         [V17,T10] (  3,  3   )     int  ->   r2         "V01.[004..008)"
-;  V18 tmp10        [V18,T11] (  3,  3   )     int  ->   r1         "V02.[004..008)"
-;  V19 tmp11        [V19,T03] (  2,  4   )     int  ->   lr         "Cast away GC"
-;  V20 tmp12        [V20,T04] (  2,  4   )     int  ->   r3         "Cast away GC"
-;* V21 tmp13        [V21,T12] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V22 tmp14        [V22,T05] (  2,  4   )     int  ->   lr         "argument with side effect"
-;  V23 tmp15        [V23,T06] (  2,  4   )     int  ->   r2         "argument with side effect"
-;  V24 tmp16        [V24,T07] (  2,  4   )     int  ->   r3         "argument with side effect"
+;  V17 tmp9         [V17,T08] (  3,  3   )     int  ->   r2         "V01.[004..008)"
+;  V18 tmp10        [V18,T09] (  3,  3   )     int  ->   r3         "V02.[004..008)"
+;  V19 tmp11        [V19,T03] (  2,  4   )     int  ->   r1         "Cast away GC"
+;  V20 tmp12        [V20,T04] (  2,  4   )     int  ->  r12         "Cast away GC"
+;  V21 tmp13        [V21,T05] (  2,  4   )     int  ->  r12         "argument with side effect"
 ;
 ; Lcl frame size = 20
 
@@ -48,49 +45,49 @@ G_M48718_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M48718_IG02:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r0]
             ldr     r2, [sp+0x20]
-            ldr     r1, [sp+0x28]
-            ldr     r3, [sp+0x1C]
-            ; byrRegs +[r3]
+            ldr     r3, [sp+0x28]
+            ldr     r1, [sp+0x1C]
+            ; byrRegs +[r1]
             cmp     r2, 0
             bne     SHORT G_M48718_IG04
                        ;; size=10 bbWeight=1 PerfScore 5.00
 G_M48718_IG03:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
-            ; byrRegs -[r3]
-            mov     lr, 1
-            b       SHORT G_M48718_IG05
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M48718_IG04:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref
-            ; byrRegs +[r3]
-            mov     lr, r3
-            ; byrRegs +[lr]
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M48718_IG05:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref, isz
-            ; byrRegs -[r3]
-            str     lr, [sp+0x0C]  // [V05 loc1]
-            ldr     r3, [sp+0x24]  // [V02 arg2]
-            ; byrRegs +[r3]
-            cmp     r1, 0
-            bne     SHORT G_M48718_IG07
-                       ;; size=10 bbWeight=1 PerfScore 4.00
-G_M48718_IG06:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
-            ; byrRegs -[r3 lr]
-            movs    r3, 1
-            b       SHORT G_M48718_IG07
+            ; byrRegs -[r1]
+            movs    r1, 1
+            b       SHORT G_M48718_IG04
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M48718_IG07:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0008 {r3}, byref
-            ; byrRegs +[r3]
-            str     r3, [sp+0x08]  // [V07 loc3]
-            str     r1, [sp]   // [V08 OutArgs]
-            ldrb    r1, [sp+0x2C]  // [V03 arg3]
-            str     r1, [sp+0x04]  // [V08 OutArgs+0x04]
-            mov     r1, lr
+G_M48718_IG04:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0002 {r1}, byref, isz
+            ; byrRegs +[r1]
+            str     r1, [sp+0x0C]  // [V05 loc1]
+            ldr     lr, [sp+0x24]  // [V02 arg2]
+            ; byrRegs +[lr]
+            cmp     r3, 0
+            bne     SHORT G_M48718_IG06
+                       ;; size=10 bbWeight=1 PerfScore 4.00
+G_M48718_IG05:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+            ; byrRegs -[r1 lr]
+            mov     r12, 1
+            b       SHORT G_M48718_IG07
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M48718_IG06:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref
+            ; byrRegs +[lr]
+            mov     r12, lr
+            ; byrRegs +[r12]
+                       ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M48718_IG07:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=1000 {r12}, byref
+            ; byrRegs -[lr]
+            str     r12, [sp+0x08] // [V07 loc3]
+            str     r3, [sp]   // [V08 OutArgs]
+            ldrb    r3, [sp+0x2C]  // [V03 arg3]
+            str     r3, [sp+0x04]  // [V08 OutArgs+0x04]
+            mov     r3, r12
             ldr     lr, [r0]
             ldr     lr, [lr+0x30]
             ldr     lr, [lr+0x0C]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0]
-            ; byrRegs -[r3]
-                       ;; size=26 bbWeight=1 PerfScore 9.00
+            ; byrRegs -[r12]
+                       ;; size=28 bbWeight=1 PerfScore 9.00
 G_M48718_IG08:        ; bbWeight=1, epilog, nogc, extend
             add     sp, 20
             pop     {r11,lr}
@@ -98,7 +95,7 @@ G_M48718_IG08:        ; bbWeight=1, epilog, nogc, extend
             bx      lr
                        ;; size=10 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 86, prolog size 18, PerfScore 31.50, instruction count 34, allocated bytes for code 86 (MethodHash=f26641b1) for method System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (FullOpts)
+; Total bytes of code 88, prolog size 18, PerfScore 31.50, instruction count 34, allocated bytes for code 88 (MethodHash=f26641b1) for method System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -110,7 +107,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 43 (0x0002b) Actual length = 86 (0x000056)
+  Function Length   : 44 (0x0002c) Actual length = 88 (0x000058)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+16 (+8.51%) : 24378.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)

@@ -8,30 +8,28 @@
 ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
 ;* V01 loc0         [V01    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op <System.Nullable`1[ubyte]>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T03] (  2,  4   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V05 tmp3         [V05,T05] (  4,  3.50)     ref  ->   r1        
-;  V06 tmp4         [V06,T02] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-;  V07 tmp5         [V07,T07] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp6         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp7         [V09,T10] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
-;  V10 tmp8         [V10,T01] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp9         [V11,T08] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V12 tmp10        [V12,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;* V13 cse0         [V13,T11] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;  V14 cse1         [V14,T06] (  4,  3   )     int  ->   r5         "CSE - aggressive"
+;  V05 tmp3         [V05,T04] (  4,  3.50)     ref  ->   r1        
+;  V06 tmp4         [V06,T01] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+;  V07 tmp5         [V07,T05] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp6         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp7         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V01.value (fldOffset=0x1)" P-INDEP
+;  V10 tmp8         [V10,T00] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+;* V11 cse0         [V11,T08] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M22152_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M22152_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
@@ -41,9 +39,9 @@ G_M22152_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             bne     SHORT G_M22152_IG08
                        ;; size=18 bbWeight=1 PerfScore 6.00
 G_M22152_IG03:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r5, 0xd1ff
-            movt    r5, 0xd1ff
-            ldr     r1, [r5]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            ldr     r1, [r0]
             ; gcrRegs +[r1]
             cmp     r1, 0
             bne     SHORT G_M22152_IG05
@@ -60,12 +58,14 @@ G_M22152_IG04:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs +[r1]
             str     r1, [sp]
             ; GC ptr vars +{V06}
-            ldr     r3, [r5-0x2C]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movt    r0, 0xd1ff
+            ldr     r3, [r0]
             ; gcrRegs +[r3]
             cmp     r3, 0
             beq     SHORT G_M22152_IG09
             adds    r0, r1, 4
-            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             mov     r1, r3
             movw    r12, 0xd1ff
@@ -78,7 +78,8 @@ G_M22152_IG04:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r2, [sp]
             ; gcrRegs +[r2]
             str     r1, [r2+0x0C]
-            mov     r0, r5
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
             mov     r1, r2
             ; gcrRegs +[r1]
             movw    r12, 0xd1ff
@@ -87,18 +88,18 @@ G_M22152_IG04:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=72 bbWeight=0.50 PerfScore 12.50
+                       ;; size=84 bbWeight=0.50 PerfScore 14.00
 G_M22152_IG05:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r2]
             ; GC ptr vars -{V06}
-            movs    r0, 0
-            strb    r0, [sp+0x04]
+            movs    r3, 0
+            strb    r3, [sp+0x04]
                        ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG06:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
-            strb    r0, [sp+0x05]
+            strb    r3, [sp+0x05]
+            ldrh    r3, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldrh    r3, [sp+0x04]
             movs    r2, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -107,8 +108,9 @@ G_M22152_IG06:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1 r4]
                        ;; size=26 bbWeight=1 PerfScore 8.00
 G_M22152_IG07:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M22152_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0] +[r4]
             movw    r0, 0xd1ff
@@ -128,7 +130,7 @@ G_M22152_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 188, prolog size 8, PerfScore 37.50, instruction count 62, allocated bytes for code 188 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
+; Total bytes of code 204, prolog size 10, PerfScore 41.00, instruction count 67, allocated bytes for code 204 (MethodHash=76b8a977) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -140,7 +142,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 94 (0x0005e) Actual length = 188 (0x0000bc)
+  Function Length   : 102 (0x00066) Actual length = 204 (0x0000cc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -148,7 +150,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

+16 (+10.81%) : 34066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)

@@ -8,33 +8,31 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->   r4         this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T03] (  2,  4   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
 ;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V04 tmp3         [V04,T05] (  4,  3.50)     ref  ->   r1        
+;  V04 tmp3         [V04,T04] (  4,  3.50)     ref  ->   r1        
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-;  V06 tmp5         [V06,T02] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
-;  V07 tmp6         [V07,T07] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
-;* V08 tmp7         [V08,T09] (  0,  0   )   ubyte  ->  zero-ref    "field V05.hasValue (fldOffset=0x0)" P-INDEP
-;* V09 tmp8         [V09,T10] (  0,  0   )   ubyte  ->  zero-ref    "field V05.value (fldOffset=0x1)" P-INDEP
-;  V10 tmp9         [V10,T01] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-;* V11 tmp10        [V11,T08] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V12 tmp11        [V12,T04] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
-;  V13 cse0         [V13,T06] (  4,  3   )     int  ->   r5         "CSE - aggressive"
+;  V06 tmp5         [V06,T01] (  5,  5   )     ref  ->  [sp+0x00]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.CodeAnalysis.CommonAssemblyWellKnownAttributeData`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],System.String]>
+;  V07 tmp6         [V07,T05] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;* V08 tmp7         [V08,T06] (  0,  0   )   ubyte  ->  zero-ref    "field V05.hasValue (fldOffset=0x0)" P-INDEP
+;* V09 tmp8         [V09,T07] (  0,  0   )   ubyte  ->  zero-ref    "field V05.value (fldOffset=0x1)" P-INDEP
+;  V10 tmp9         [V10,T00] (  3,  6   )  struct ( 4) [sp+0x04]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M24931_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M24931_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r5, 0xd1ff
-            movt    r5, 0xd1ff
-            ldr     r1, [r5]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            ldr     r1, [r0]
             ; gcrRegs +[r1]
             cmp     r1, 0
             bne     SHORT G_M24931_IG04
@@ -51,12 +49,14 @@ G_M24931_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs +[r1]
             str     r1, [sp]
             ; GC ptr vars +{V06}
-            ldr     r3, [r5-0x30]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movt    r0, 0xd1ff
+            ldr     r3, [r0]
             ; gcrRegs +[r3]
             cmp     r3, 0
             beq     SHORT G_M24931_IG06
             adds    r0, r1, 4
-            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             mov     r1, r3
             movw    r12, 0xd1ff
@@ -69,7 +69,8 @@ G_M24931_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r2, [sp]
             ; gcrRegs +[r2]
             str     r1, [r2+0x0C]
-            mov     r0, r5
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
             mov     r1, r2
             ; gcrRegs +[r1]
             movw    r12, 0xd1ff
@@ -78,17 +79,17 @@ G_M24931_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r1]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=72 bbWeight=0.50 PerfScore 12.50
+                       ;; size=84 bbWeight=0.50 PerfScore 14.00
 G_M24931_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r2]
             ; GC ptr vars -{V06}
-            movs    r0, 1
-            strb    r0, [sp+0x04]
-            movs    r0, 16
-            strb    r0, [sp+0x05]
+            movs    r3, 1
+            strb    r3, [sp+0x04]
+            movs    r3, 16
+            strb    r3, [sp+0x05]
+            ldrh    r3, [sp+0x04]
             mov     r0, r4
             ; gcrRegs +[r0]
-            ldrh    r3, [sp+0x04]
             movs    r2, 0
             movw    lr, 0xd1ff
             movt    lr, 0xd1ff
@@ -97,8 +98,9 @@ G_M24931_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0012 {r1 r4},
             ; gcrRegs -[r1 r4]
                        ;; size=34 bbWeight=1 PerfScore 11.00
 G_M24931_IG05:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=1 PerfScore 1.00
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M24931_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r0]
             movw    r3, 0xd1ff
@@ -108,7 +110,7 @@ G_M24931_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 148, prolog size 8, PerfScore 32.50, instruction count 50, allocated bytes for code 148 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
+; Total bytes of code 164, prolog size 10, PerfScore 36.00, instruction count 55, allocated bytes for code 164 (MethodHash=85d59e9c) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -120,7 +122,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 74 (0x0004a) Actual length = 148 (0x000094)
+  Function Length   : 82 (0x00052) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -128,7 +130,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 302 136 31 135 -1,470 +176
benchmarks.run_pgo.linux.arm.checked.mch 3,281 914 1,750 617 -9,854 +49,190
benchmarks.run_tiered.linux.arm.checked.mch 281 138 27 116 -1,478 +152
coreclr_tests.run.linux.arm.checked.mch 14,969 9,342 216 5,411 -210,986 +1,516
libraries.crossgen2.linux.arm.checked.mch 1,085 407 48 630 -5,552 +384
libraries.pmi.linux.arm.checked.mch 1,915 734 127 1,054 -7,146 +1,136
libraries_tests.run.linux.arm.Release.mch 13,691 8,817 569 4,305 -86,252 +2,978
librariestestsnotieredcompilation.run.linux.arm.Release.mch 3,675 1,079 156 2,440 -10,776 +2,266
realworld.run.linux.arm.checked.mch 443 260 23 160 -2,612 +476
39,642 21,827 2,947 14,868 -336,126 +58,274

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 46,284 5,344 40,940 1,208 (2.54%) 1,208 (2.54%)
benchmarks.run_pgo.linux.arm.checked.mch 155,310 54,949 100,361 3,309 (2.09%) 3,309 (2.09%)
benchmarks.run_tiered.linux.arm.checked.mch 81,826 45,099 36,727 1,122 (1.35%) 1,122 (1.35%)
coreclr_tests.run.linux.arm.checked.mch 471,777 258,996 212,781 7,543 (1.57%) 7,543 (1.57%)
libraries.crossgen2.linux.arm.checked.mch 193,690 14 193,676 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 270,798 6 270,792 7,827 (2.81%) 7,827 (2.81%)
libraries_tests.run.linux.arm.Release.mch 707,758 441,682 266,076 18,888 (2.60%) 18,888 (2.60%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 273,849 21,565 252,284 33,279 (10.84%) 33,279 (10.84%)
realworld.run.linux.arm.checked.mch 36,398 157 36,241 1,412 (3.73%) 1,412 (3.73%)
2,237,690 827,812 1,409,878 74,588 (3.23%) 74,588 (3.23%)

jit-analyze output

benchmarks.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15303134 (overridden on cmd)
Total bytes of diff: 15301840 (overridden on cmd)
Total bytes of delta: -1294 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          18 : 10759.dasm (2.51 % of base)
          16 : 9789.dasm (2.02 % of base)
          16 : 24885.dasm (10.81 % of base)
          16 : 24953.dasm (10.96 % of base)
          10 : 3437.dasm (2.37 % of base)
          10 : 45585.dasm (0.94 % of base)
           8 : 24879.dasm (3.36 % of base)
           8 : 6047.dasm (0.64 % of base)
           6 : 1507.dasm (0.65 % of base)
           6 : 5253.dasm (0.29 % of base)
           6 : 9583.dasm (6.67 % of base)
           4 : 12513.dasm (1.79 % of base)
           4 : 14561.dasm (0.18 % of base)
           4 : 15169.dasm (0.19 % of base)
           4 : 19150.dasm (0.95 % of base)
           4 : 21348.dasm (0.89 % of base)
           4 : 996.dasm (1.31 % of base)
           4 : 18992.dasm (0.82 % of base)
           4 : 27468.dasm (1.89 % of base)
           2 : 2694.dasm (2.33 % of base)

Top file improvements (bytes):
        -122 : 17487.dasm (-7.47 % of base)
         -72 : 6067.dasm (-4.44 % of base)
         -40 : 36754.dasm (-7.78 % of base)
         -38 : 13019.dasm (-29.69 % of base)
         -38 : 28045.dasm (-5.78 % of base)
         -38 : 8896.dasm (-0.48 % of base)
         -36 : 29854.dasm (-7.86 % of base)
         -36 : 2826.dasm (-6.02 % of base)
         -32 : 17490.dasm (-4.76 % of base)
         -30 : 6087.dasm (-2.96 % of base)
         -30 : 4476.dasm (-0.95 % of base)
         -28 : 25675.dasm (-1.01 % of base)
         -24 : 6012.dasm (-3.86 % of base)
         -22 : 1340.dasm (-5.12 % of base)
         -22 : 13398.dasm (-0.95 % of base)
         -22 : 17488.dasm (-5.73 % of base)
         -22 : 2824.dasm (-5.42 % of base)
         -20 : 12175.dasm (-1.15 % of base)
         -20 : 12390.dasm (-0.56 % of base)
         -20 : 5981.dasm (-4.03 % of base)

56 total files with Code Size differences (31 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
          18 (2.51 % of base) : 10759.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (FullOpts)
          16 (10.96 % of base) : 24953.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (10.81 % of base) : 24885.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
          16 (2.02 % of base) : 9789.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (FullOpts)
          10 (0.94 % of base) : 45585.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
          10 (2.37 % of base) : 3437.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
           8 (3.36 % of base) : 24879.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyKeyFileAttributeSetting():System.String:this (FullOpts)
           8 (0.64 % of base) : 6047.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (FullOpts)
           6 (0.65 % of base) : 1507.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
           6 (0.29 % of base) : 5253.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (FullOpts)
           6 (6.67 % of base) : 9583.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
           4 (0.95 % of base) : 19150.dasm - AssignRect:Run():double:this (FullOpts)
           4 (1.89 % of base) : 27468.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
           4 (0.89 % of base) : 21348.dasm - System.Collections.Immutable.ImmutableSortedSet`1[int]:LeafToRootRefill(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableSortedSet`1[int]:this (FullOpts)
           4 (0.18 % of base) : 14561.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (FullOpts)
           4 (1.79 % of base) : 12513.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (FullOpts)
           4 (1.31 % of base) : 996.dasm - System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] (FullOpts)
           4 (0.82 % of base) : 18992.dasm - System.Text.Json.Tests.Perf_DateTimes:Setup():this (FullOpts)
           4 (0.19 % of base) : 15169.dasm - System.Xml.Linq.XContainer+ContentReader:ReadContentFrom(System.Xml.Linq.XContainer,System.Xml.XmlReader):ubyte:this (FullOpts)
           2 (0.75 % of base) : 13764.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (FullOpts)

Top method improvements (bytes):
        -122 (-7.47 % of base) : 17487.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
         -72 (-4.44 % of base) : 6067.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (FullOpts)
         -40 (-7.78 % of base) : 36754.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
         -38 (-29.69 % of base) : 13019.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
         -38 (-5.78 % of base) : 28045.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueIndented(System.Guid):this (FullOpts)
         -38 (-0.48 % of base) : 8896.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -36 (-6.02 % of base) : 2826.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
         -36 (-7.86 % of base) : 29854.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (FullOpts)
         -32 (-4.76 % of base) : 17490.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (FullOpts)
         -30 (-0.95 % of base) : 4476.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
         -30 (-2.96 % of base) : 6087.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this (FullOpts)
         -28 (-1.01 % of base) : 25675.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
         -24 (-3.86 % of base) : 6012.dasm - System.Reflection.Emit.RuntimeFieldBuilder:.ctor(System.Reflection.Emit.RuntimeTypeBuilder,System.String,System.Type,System.Type[],System.Type[],int):this (FullOpts)
         -22 (-0.95 % of base) : 13398.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (FullOpts)
         -22 (-5.42 % of base) : 2824.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (FullOpts)
         -22 (-5.12 % of base) : 1340.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
         -22 (-5.73 % of base) : 17488.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (FullOpts)
         -20 (-4.03 % of base) : 5981.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeTokenWorkerNoLock(System.Type,ubyte):int:this (FullOpts)
         -20 (-0.56 % of base) : 12390.dasm - System.Runtime.Serialization.Json.XmlJsonReader:Read():ubyte:this (FullOpts)
         -20 (-1.15 % of base) : 12175.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartElement(System.String,System.String,System.String):this (FullOpts)

Top method regressions (percentages):
          16 (10.96 % of base) : 24953.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (10.81 % of base) : 24885.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
           6 (6.67 % of base) : 9583.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
           8 (3.36 % of base) : 24879.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyKeyFileAttributeSetting():System.String:this (FullOpts)
          18 (2.51 % of base) : 10759.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (FullOpts)
           2 (2.50 % of base) : 7592.dasm - System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this (FullOpts)
          10 (2.37 % of base) : 3437.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
           2 (2.33 % of base) : 2694.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (FullOpts)
           2 (2.33 % of base) : 199.dasm - System.Text.Encoder:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte):int:this (FullOpts)
          16 (2.02 % of base) : 9789.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (FullOpts)
           2 (1.92 % of base) : 42776.dasm - System.Text.Encoder:Convert(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte,byref,byref,byref):this (FullOpts)
           4 (1.89 % of base) : 27468.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
           4 (1.79 % of base) : 12513.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (FullOpts)
           2 (1.75 % of base) : 3438.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
           4 (1.31 % of base) : 996.dasm - System.Text.Json.JsonSerializer:GetTypeInfo[System.__Canon](System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.__Canon] (FullOpts)
           4 (0.95 % of base) : 19150.dasm - AssignRect:Run():double:this (FullOpts)
          10 (0.94 % of base) : 45585.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
           4 (0.89 % of base) : 21348.dasm - System.Collections.Immutable.ImmutableSortedSet`1[int]:LeafToRootRefill(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableSortedSet`1[int]:this (FullOpts)
           4 (0.82 % of base) : 18992.dasm - System.Text.Json.Tests.Perf_DateTimes:Setup():this (FullOpts)
           2 (0.75 % of base) : 13764.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (FullOpts)

Top method improvements (percentages):
         -38 (-29.69 % of base) : 13019.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
         -18 (-7.96 % of base) : 3564.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)
         -36 (-7.86 % of base) : 29854.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (FullOpts)
         -40 (-7.78 % of base) : 36754.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
        -122 (-7.47 % of base) : 17487.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
         -14 (-7.07 % of base) : 15824.dasm - System.Collections.Generic.SortedList`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -6 (-6.38 % of base) : 42908.dasm - Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
         -12 (-6.06 % of base) : 6057.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetStringMetadataToken(System.String):int:this (FullOpts)
         -36 (-6.02 % of base) : 2826.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
         -12 (-5.83 % of base) : 20861.dasm - System.Diagnostics.Tracing.EventSource:IsEnabledByDefault(int,ubyte,int,long):ubyte:this (FullOpts)
         -38 (-5.78 % of base) : 28045.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueIndented(System.Guid):this (FullOpts)
         -14 (-5.74 % of base) : 4404.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -22 (-5.73 % of base) : 17488.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (FullOpts)
         -22 (-5.42 % of base) : 2824.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (FullOpts)
          -6 (-5.26 % of base) : 46520.dasm - Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (FullOpts)
         -22 (-5.12 % of base) : 1340.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
         -32 (-4.76 % of base) : 17490.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (FullOpts)
          -4 (-4.55 % of base) : 14158.dasm - System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
         -72 (-4.44 % of base) : 6067.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (FullOpts)
         -16 (-4.40 % of base) : 5984.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeRefNested(System.Type,System.Reflection.Module):int:this (FullOpts)


benchmarks.run_pgo.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 61262128 (overridden on cmd)
Total bytes of diff: 61301464 (overridden on cmd)
Total bytes of delta: 39336 (0.06 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          30 : 146288.dasm (5.17 % of base)
          30 : 147520.dasm (5.21 % of base)
          30 : 148944.dasm (5.21 % of base)
          30 : 151924.dasm (5.21 % of base)
          30 : 155896.dasm (5.21 % of base)
          30 : 156632.dasm (5.21 % of base)
          30 : 146120.dasm (5.21 % of base)
          30 : 146420.dasm (5.21 % of base)
          30 : 147948.dasm (5.21 % of base)
          30 : 149080.dasm (5.21 % of base)
          30 : 150272.dasm (5.21 % of base)
          30 : 150608.dasm (5.21 % of base)
          30 : 152316.dasm (5.21 % of base)
          30 : 153692.dasm (5.21 % of base)
          30 : 146260.dasm (5.21 % of base)
          30 : 146616.dasm (5.21 % of base)
          30 : 148656.dasm (5.21 % of base)
          30 : 149200.dasm (5.21 % of base)
          30 : 151484.dasm (5.17 % of base)
          30 : 154416.dasm (5.21 % of base)

Top file improvements (bytes):
        -182 : 91390.dasm (-2.48 % of base)
        -180 : 23116.dasm (-8.44 % of base)
        -138 : 91075.dasm (-0.72 % of base)
        -122 : 56912.dasm (-7.61 % of base)
         -88 : 90958.dasm (-4.97 % of base)
         -86 : 20776.dasm (-3.59 % of base)
         -74 : 25715.dasm (-4.83 % of base)
         -72 : 17888.dasm (-3.55 % of base)
         -66 : 17098.dasm (-3.77 % of base)
         -64 : 86641.dasm (-1.72 % of base)
         -58 : 23103.dasm (-3.27 % of base)
         -56 : 30168.dasm (-2.56 % of base)
         -52 : 28578.dasm (-0.66 % of base)
         -52 : 91248.dasm (-3.99 % of base)
         -48 : 19925.dasm (-2.45 % of base)
         -42 : 30296.dasm (-2.80 % of base)
         -40 : 27209.dasm (-3.65 % of base)
         -40 : 123842.dasm (-7.78 % of base)
         -38 : 149573.dasm (-2.40 % of base)
         -38 : 17986.dasm (-3.46 % of base)

70 total files with Code Size differences (48 improved, 22 regressed), 20 unchanged.

Top method regressions (bytes):
          30 (5.17 % of base) : 146288.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 147520.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 148944.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 151924.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 155896.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 156632.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 146120.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 146420.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 147948.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 149080.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 150272.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 150608.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 152316.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 153692.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 146260.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 146616.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 148656.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 149200.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.17 % of base) : 151484.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 154416.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)

Top method improvements (bytes):
        -182 (-2.48 % of base) : 91390.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Instrumented Tier0)
        -180 (-8.44 % of base) : 23116.dasm - ProtoBuf.Internal.Serializers.CompiledSerializer:Wrap(ProtoBuf.Internal.Serializers.IProtoTypeSerializer,ProtoBuf.Meta.RuntimeTypeModel):ProtoBuf.Internal.Serializers.ICompiledSerializer (Instrumented Tier0)
        -138 (-0.72 % of base) : 91075.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNeverOverflowBinaryOperators(int,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.ConstantValue):System.Object (Instrumented Tier0)
        -122 (-7.61 % of base) : 56912.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
         -88 (-4.97 % of base) : 90958.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this (Instrumented Tier0)
         -86 (-3.59 % of base) : 20776.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (Instrumented Tier0)
         -74 (-4.83 % of base) : 25715.dasm - System.Linq.Expressions.Expression:Call(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.MethodCallExpression (Instrumented Tier0)
         -72 (-3.55 % of base) : 17888.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeValue(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,Newtonsoft.Json.Serialization.JsonContainerContract,Newtonsoft.Json.Serialization.JsonProperty):this (Instrumented Tier0)
         -66 (-3.77 % of base) : 17098.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
         -64 (-1.72 % of base) : 86641.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
         -58 (-3.27 % of base) : 23103.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (Instrumented Tier0)
         -56 (-2.56 % of base) : 30168.dasm - System.Resources.ManifestBasedResourceGroveler:CreateResourceSet(System.IO.Stream,System.Reflection.Assembly):System.Resources.ResourceSet:this (Instrumented Tier0)
         -52 (-3.99 % of base) : 91248.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitConstantValue(Microsoft.CodeAnalysis.ConstantValue):this (Instrumented Tier0)
         -52 (-0.66 % of base) : 28578.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
         -48 (-2.45 % of base) : 19925.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (Instrumented Tier0)
         -42 (-2.80 % of base) : 30296.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
         -40 (-7.78 % of base) : 123842.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0-FullOpts)
         -40 (-3.65 % of base) : 27209.dasm - System.Linq.Expressions.Expression:GetUserDefinedBinaryOperator(int,System.String,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte):System.Linq.Expressions.BinaryExpression (Instrumented Tier0)
         -38 (-3.46 % of base) : 17986.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Create(System.Linq.Expressions.Expression,System.String,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression]):System.Linq.Expressions.Expression`1[System.__Canon] (Instrumented Tier0)
         -38 (-2.40 % of base) : 149573.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:InternalDeserialize(System.Runtime.Serialization.XmlReaderDelegator,System.String,System.String,System.Type,byref):System.Object:this (Instrumented Tier0)

Top method regressions (percentages):
          30 (5.21 % of base) : 147520.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 148944.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 151924.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 155896.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 156632.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 146120.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 146420.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 147948.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 149080.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 150272.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 150608.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 152316.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 153692.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 146260.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 146616.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 148656.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 149200.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 154416.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 154732.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          30 (5.21 % of base) : 144712.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)

Top method improvements (percentages):
         -16 (-19.51 % of base) : 24751.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
         -16 (-19.51 % of base) : 17710.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
         -28 (-15.73 % of base) : 10935.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 121467.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 120394.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 67711.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 70947.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 54771.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 71771.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 74034.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -18 (-13.43 % of base) : 101519.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ValidateDeclarationNameConflictsInScope(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Instrumented Tier0)
         -14 (-11.48 % of base) : 87715.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)
         -12 (-10.17 % of base) : 41769.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-10.17 % of base) : 59413.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -22 (-9.73 % of base) : 8383.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateGetterMethod(System.String,System.Type):System.Reflection.Emit.DynamicMethod (Instrumented Tier0)
          -4 (-9.09 % of base) : 39648.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier1)
         -20 (-9.01 % of base) : 20683.dasm - System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Instrumented Tier0)
         -22 (-8.66 % of base) : 8387.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreateSetterMethod(System.String,System.Type):System.Reflection.Emit.DynamicMethod (Instrumented Tier0)
        -180 (-8.44 % of base) : 23116.dasm - ProtoBuf.Internal.Serializers.CompiledSerializer:Wrap(ProtoBuf.Internal.Serializers.IProtoTypeSerializer,ProtoBuf.Meta.RuntimeTypeModel):ProtoBuf.Internal.Serializers.ICompiledSerializer (Instrumented Tier0)
         -14 (-8.43 % of base) : 48.dasm - System.Buffer:Memmove[ushort](byref,byref,uint) (Instrumented Tier0)


benchmarks.run_tiered.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 22643448 (overridden on cmd)
Total bytes of diff: 22642122 (overridden on cmd)
Total bytes of delta: -1326 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          18 : 26700.dasm (2.51 % of base)
          16 : 53306.dasm (10.81 % of base)
          16 : 12054.dasm (1.11 % of base)
          16 : 20492.dasm (2.02 % of base)
          10 : 20634.dasm (2.37 % of base)
          10 : 80895.dasm (0.94 % of base)
           6 : 2896.dasm (0.70 % of base)
           6 : 38551.dasm (0.29 % of base)
           6 : 26653.dasm (6.67 % of base)
           4 : 32299.dasm (0.18 % of base)
           4 : 39293.dasm (0.82 % of base)
           4 : 42832.dasm (0.89 % of base)
           4 : 27732.dasm (1.79 % of base)
           4 : 32042.dasm (0.19 % of base)
           4 : 55042.dasm (1.89 % of base)
           2 : 15109.dasm (2.50 % of base)
           2 : 20641.dasm (0.39 % of base)
           2 : 32708.dasm (0.75 % of base)
           2 : 76497.dasm (1.92 % of base)
           2 : 880.dasm (2.33 % of base)

Top file improvements (bytes):
        -122 : 35332.dasm (-7.61 % of base)
         -74 : 12687.dasm (-4.52 % of base)
         -40 : 66072.dasm (-7.60 % of base)
         -38 : 21888.dasm (-0.48 % of base)
         -38 : 56760.dasm (-6.60 % of base)
         -36 : 63098.dasm (-7.86 % of base)
         -36 : 20998.dasm (-6.02 % of base)
         -32 : 35337.dasm (-4.76 % of base)
         -30 : 19936.dasm (-0.95 % of base)
         -30 : 12791.dasm (-2.98 % of base)
         -28 : 49159.dasm (-1.01 % of base)
         -24 : 12868.dasm (-3.88 % of base)
         -22 : 6724.dasm (-5.12 % of base)
         -22 : 22125.dasm (-5.42 % of base)
         -22 : 25341.dasm (-0.95 % of base)
         -22 : 35356.dasm (-5.73 % of base)
         -20 : 12223.dasm (-4.03 % of base)
         -20 : 27399.dasm (-1.15 % of base)
         -20 : 28031.dasm (-0.56 % of base)
         -18 : 5327.dasm (-8.82 % of base)

59 total files with Code Size differences (35 improved, 24 regressed), 20 unchanged.

Top method regressions (bytes):
          18 (2.51 % of base) : 26700.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (Tier0-FullOpts)
          16 (10.81 % of base) : 53306.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (Tier1)
          16 (1.11 % of base) : 12054.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (Tier0-FullOpts)
          16 (2.02 % of base) : 20492.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (Tier1)
          10 (0.94 % of base) : 80895.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (Tier0-FullOpts)
          10 (2.37 % of base) : 20634.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
           6 (0.70 % of base) : 2896.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier0-FullOpts)
           6 (0.29 % of base) : 38551.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (Tier1)
           6 (6.67 % of base) : 26653.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
           4 (1.89 % of base) : 55042.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (Tier1)
           4 (0.89 % of base) : 42832.dasm - System.Collections.Immutable.ImmutableSortedSet`1[int]:LeafToRootRefill(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableSortedSet`1[int]:this (Tier0-FullOpts)
           4 (0.18 % of base) : 32299.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (Tier0-FullOpts)
           4 (1.79 % of base) : 27732.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (Tier0-FullOpts)
           4 (0.82 % of base) : 39293.dasm - System.Text.Json.Tests.Perf_DateTimes:Setup():this (Tier0-FullOpts)
           4 (0.19 % of base) : 32042.dasm - System.Xml.Linq.XContainer+ContentReader:ReadContentFrom(System.Xml.Linq.XContainer,System.Xml.XmlReader):ubyte:this (Tier0-FullOpts)
           2 (0.75 % of base) : 32708.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (Tier0-FullOpts)
           2 (0.20 % of base) : 7796.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier0-FullOpts)
           2 (0.49 % of base) : 2337.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
           2 (2.33 % of base) : 6888.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (Tier1)
           2 (1.92 % of base) : 76497.dasm - System.Text.Encoder:Convert(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte,byref,byref,byref):this (Tier1)

Top method improvements (bytes):
        -122 (-7.61 % of base) : 35332.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
         -74 (-4.52 % of base) : 12687.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (Tier1)
         -40 (-7.60 % of base) : 66072.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0-FullOpts)
         -38 (-6.60 % of base) : 56760.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueIndented(System.Guid):this (Tier1)
         -38 (-0.48 % of base) : 21888.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
         -36 (-6.02 % of base) : 20998.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
         -36 (-7.86 % of base) : 63098.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (Tier1)
         -32 (-4.76 % of base) : 35337.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
         -30 (-0.95 % of base) : 19936.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (Tier0-FullOpts)
         -30 (-2.98 % of base) : 12791.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this (Tier1)
         -28 (-1.01 % of base) : 49159.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0-FullOpts)
         -24 (-3.88 % of base) : 12868.dasm - System.Reflection.Emit.RuntimeFieldBuilder:.ctor(System.Reflection.Emit.RuntimeTypeBuilder,System.String,System.Type,System.Type[],System.Type[],int):this (Tier1)
         -22 (-0.95 % of base) : 25341.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
         -22 (-5.42 % of base) : 22125.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (Tier1)
         -22 (-5.12 % of base) : 6724.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (Tier1)
         -22 (-5.73 % of base) : 35356.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (Tier1)
         -20 (-4.03 % of base) : 12223.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeTokenWorkerNoLock(System.Type,ubyte):int:this (Tier1)
         -20 (-0.56 % of base) : 28031.dasm - System.Runtime.Serialization.Json.XmlJsonReader:Read():ubyte:this (Tier1)
         -20 (-1.15 % of base) : 27399.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartElement(System.String,System.String,System.String):this (Tier1)
         -18 (-8.82 % of base) : 5327.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0-FullOpts)

Top method regressions (percentages):
          16 (10.81 % of base) : 53306.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (Tier1)
           6 (6.67 % of base) : 26653.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
          18 (2.51 % of base) : 26700.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateDateTimeArray(int):System.DateTime[] (Tier0-FullOpts)
           2 (2.50 % of base) : 15109.dasm - System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this (Tier1)
          10 (2.37 % of base) : 20634.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
           2 (2.33 % of base) : 6888.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (Tier1)
           2 (2.33 % of base) : 880.dasm - System.Text.Encoder:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte):int:this (Tier1)
          16 (2.02 % of base) : 20492.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (Tier1)
           2 (1.92 % of base) : 76497.dasm - System.Text.Encoder:Convert(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte,byref,byref,byref):this (Tier1)
           4 (1.89 % of base) : 55042.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (Tier1)
           4 (1.79 % of base) : 27732.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (Tier0-FullOpts)
           2 (1.75 % of base) : 20635.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (Tier0-FullOpts)
          16 (1.11 % of base) : 12054.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (Tier0-FullOpts)
          10 (0.94 % of base) : 80895.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (Tier0-FullOpts)
           4 (0.89 % of base) : 42832.dasm - System.Collections.Immutable.ImmutableSortedSet`1[int]:LeafToRootRefill(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableSortedSet`1[int]:this (Tier0-FullOpts)
           4 (0.82 % of base) : 39293.dasm - System.Text.Json.Tests.Perf_DateTimes:Setup():this (Tier0-FullOpts)
           2 (0.75 % of base) : 32708.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (Tier0-FullOpts)
           6 (0.70 % of base) : 2896.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier0-FullOpts)
           2 (0.49 % of base) : 2337.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
           2 (0.39 % of base) : 20641.dasm - V8.Crypto.BigInteger:multiplyTo(V8.Crypto.BigInteger,V8.Crypto.BigInteger):this (Tier0-FullOpts)

Top method improvements (percentages):
         -16 (-19.51 % of base) : 11098.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
          -4 (-9.09 % of base) : 11103.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier1)
         -18 (-8.82 % of base) : 5327.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0-FullOpts)
          -6 (-8.33 % of base) : 67633.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,uint) (Tier0)
         -14 (-8.24 % of base) : 12417.dasm - System.Reflection.Emit.RuntimeTypeBuilder:SetParamInfo(System.Runtime.CompilerServices.QCallModule,int,int,int,System.String):int (Tier1)
         -36 (-7.86 % of base) : 63098.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueMinimized(System.Guid):this (Tier1)
        -122 (-7.61 % of base) : 35332.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
         -40 (-7.60 % of base) : 66072.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0-FullOpts)
         -14 (-7.07 % of base) : 33332.dasm - System.Collections.Generic.SortedList`2+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier1)
         -38 (-6.60 % of base) : 56760.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValueIndented(System.Guid):this (Tier1)
          -6 (-6.38 % of base) : 21309.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
          -6 (-6.38 % of base) : 81556.dasm - Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
         -10 (-6.33 % of base) : 22124.dasm - Newtonsoft.Json.Utilities.DateTimeParser:Parse(ushort[],int,int):ubyte:this (Tier1)
         -10 (-6.33 % of base) : 12816.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTokenFromTypeSpec(ubyte[],int):int:this (Tier1)
         -12 (-6.32 % of base) : 12821.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefFromSignature(int,System.String,ubyte[],int):int:this (Tier1)
         -12 (-6.19 % of base) : 12304.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetStringMetadataToken(System.String):int:this (Tier1)
         -36 (-6.02 % of base) : 20998.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
         -12 (-5.83 % of base) : 40436.dasm - System.Diagnostics.Tracing.EventSource:IsEnabledByDefault(int,ubyte,int,long):ubyte:this (Tier1)
         -14 (-5.74 % of base) : 4991.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -22 (-5.73 % of base) : 35356.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (Tier1)


coreclr_tests.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 321791116 (overridden on cmd)
Total bytes of diff: 321581646 (overridden on cmd)
Total bytes of delta: -209470 (-0.07 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          66 : 332783.dasm (10.22 % of base)
          44 : 406809.dasm (12.87 % of base)
          44 : 413230.dasm (13.02 % of base)
          36 : 408042.dasm (6.25 % of base)
          36 : 414257.dasm (6.29 % of base)
          32 : 295035.dasm (5.52 % of base)
          28 : 292733.dasm (4.84 % of base)
          26 : 176811.dasm (4.51 % of base)
          26 : 191688.dasm (4.51 % of base)
          26 : 313717.dasm (4.51 % of base)
          24 : 124163.dasm (4.12 % of base)
          24 : 66996.dasm (4.12 % of base)
          24 : 150608.dasm (4.12 % of base)
          24 : 212832.dasm (4.12 % of base)
          24 : 71451.dasm (4.12 % of base)
          24 : 121808.dasm (4.12 % of base)
          24 : 210959.dasm (4.12 % of base)
          24 : 275075.dasm (4.12 % of base)
          24 : 305435.dasm (4.12 % of base)
          24 : 307556.dasm (4.12 % of base)

Top file improvements (bytes):
        -710 : 409872.dasm (-2.02 % of base)
        -602 : 410374.dasm (-1.76 % of base)
        -500 : 394029.dasm (-24.41 % of base)
        -482 : 394424.dasm (-20.46 % of base)
        -464 : 394340.dasm (-24.95 % of base)
        -462 : 395409.dasm (-26.22 % of base)
        -444 : 394362.dasm (-22.07 % of base)
        -442 : 393909.dasm (-28.22 % of base)
        -438 : 395877.dasm (-31.20 % of base)
        -438 : 394716.dasm (-30.25 % of base)
        -432 : 394280.dasm (-32.14 % of base)
        -422 : 394625.dasm (-25.36 % of base)
        -418 : 395186.dasm (-21.57 % of base)
        -416 : 395472.dasm (-23.34 % of base)
        -410 : 394460.dasm (-19.54 % of base)
        -408 : 395454.dasm (-25.15 % of base)
        -400 : 395305.dasm (-33.33 % of base)
        -400 : 393683.dasm (-36.63 % of base)
        -396 : 394432.dasm (-26.72 % of base)
        -388 : 389332.dasm (-31.29 % of base)

85 total files with Code Size differences (61 improved, 24 regressed), 20 unchanged.

Top method regressions (bytes):
          66 (10.22 % of base) : 332783.dasm - VectorMgdMgd+HVATests`1[ubyte]:Init_HVAs():this (FullOpts)
          44 (12.87 % of base) : 406809.dasm - Test_10w5d.testout1:Func_0():int (FullOpts)
          44 (13.02 % of base) : 413230.dasm - Test_10w5d.testout1:Func_0():int (FullOpts)
          36 (6.25 % of base) : 408042.dasm - Test_10w5d.testout1:Func_0_5_6_6():double (FullOpts)
          36 (6.29 % of base) : 414257.dasm - Test_10w5d.testout1:Func_0_5_6_6():double (FullOpts)
          32 (5.52 % of base) : 295035.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          28 (4.84 % of base) : 292733.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          26 (4.51 % of base) : 176811.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          26 (4.51 % of base) : 191688.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          26 (4.51 % of base) : 313717.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 124163.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 66996.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 150608.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 212832.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 71451.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 121808.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 210959.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 275075.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 305435.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 307556.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)

Top method improvements (bytes):
        -710 (-2.02 % of base) : 409872.dasm - longMDArrTest:TestEntryPoint():int (FullOpts)
        -602 (-1.76 % of base) : 410374.dasm - ulongMDArrTest:TestEntryPoint():int (FullOpts)
        -500 (-24.41 % of base) : 394029.dasm - (dynamicClass):ABIStress_PInvoker211(ABIStress.S9U,ABIStress.S14U,System.Int128,ABIStress.S1P,ABIStress.Hfa1,ABIStress.S4P,ABIStress.S31U,float,System.Int128,short,int,ABIStress.S13U,ABIStress.S8U,ABIStress.S13U,ABIStress.S2U,ABIStress.I128_2,ubyte,ABIStress.S13U,float,ABIStress.S8U,System.Runtime.Intrinsics.Vector128`1[int],System.Int128,ABIStress.S11U,ABIStress.S1P,ABIStress.S2U):int[] (FullOpts)
        -482 (-20.46 % of base) : 394424.dasm - (dynamicClass):ABIStress_PInvoker413(ABIStress.S13U):int[] (FullOpts)
        -464 (-24.95 % of base) : 394340.dasm - (dynamicClass):ABIStress_PInvoker369(ABIStress.S2P,ABIStress.S16U,short,ABIStress.S4U,double,short,ABIStress.S10U,ABIStress.S6U,int,ABIStress.S15U,int,ABIStress.S7U,ABIStress.S5U,ABIStress.S13U,ubyte,ABIStress.S11U,ABIStress.S17U,ABIStress.S6U,ABIStress.S8U,ABIStress.S11U,ABIStress.S6U,ABIStress.S12U):int[] (FullOpts)
        -462 (-26.22 % of base) : 395409.dasm - (dynamicClass):ABIStress_PInvoker929(ABIStress.S17U,ABIStress.S10U,double,System.Numerics.Vector`1[int],System.Int128,int,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,ABIStress.S7U,ABIStress.S8P,float,ABIStress.S8U,ABIStress.S15U,ABIStress.S16U,ABIStress.S6U,ABIStress.S31U,ABIStress.S2P,double,ABIStress.S7U,ABIStress.S3U,ABIStress.I128_2,ABIStress.Hfa1,short):int[] (FullOpts)
        -444 (-22.07 % of base) : 394362.dasm - (dynamicClass):ABIStress_PInvoker380(ABIStress.S12U,ABIStress.I128_2,ABIStress.S5U,float,ABIStress.S17U):int[] (FullOpts)
        -442 (-28.22 % of base) : 393909.dasm - (dynamicClass):ABIStress_PInvoker150(ABIStress.S8U,float,ABIStress.S11U,ABIStress.S8P,ABIStress.S8U,ABIStress.S13U,ABIStress.S8P,ABIStress.S5U,ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S6U,ABIStress.S6U,int,ubyte,ABIStress.I128_1):int[] (FullOpts)
        -438 (-30.25 % of base) : 394716.dasm - (dynamicClass):ABIStress_PInvoker563(ABIStress.S10U,ABIStress.S4U,ABIStress.S9U,ABIStress.S32U,ABIStress.S2P,float,ABIStress.S7U,ABIStress.S2U,ABIStress.S31U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S2U,long,System.Int128):int[] (FullOpts)
        -438 (-31.20 % of base) : 395877.dasm - (dynamicClass):ABIStress_TailCaller104(ubyte,ABIStress.S5U,ABIStress.S14U,ABIStress.S9U,ubyte,ABIStress.S8U,ABIStress.S8P,ABIStress.S14U,ABIStress.S15U,ABIStress.Hfa2,ABIStress.S11U,ABIStress.S16U,float,int,short,ABIStress.Hfa1,ABIStress.S2U,ABIStress.S9U,ABIStress.S12U,ABIStress.S15U,ABIStress.S17U,long,ABIStress.S17U):int (FullOpts)
        -432 (-32.14 % of base) : 394280.dasm - (dynamicClass):ABIStress_PInvoker338(ABIStress.S15U,ABIStress.S1P,ABIStress.S3U,ABIStress.S3U,ABIStress.S17U,ABIStress.S11U,ABIStress.S7U,System.Numerics.Vector`1[int],ABIStress.S5U,ABIStress.S2P,ABIStress.I128_2,ABIStress.S31U,ABIStress.S8P,ABIStress.S16U,ABIStress.S2P,ABIStress.S8P,ABIStress.I128_1,ABIStress.S31U,ABIStress.S32U,int):int[] (FullOpts)
        -422 (-25.36 % of base) : 394625.dasm - (dynamicClass):ABIStress_PInvoker516(ABIStress.S5U,ABIStress.S17U,ABIStress.S8U,ABIStress.S1P,ABIStress.S17U,ABIStress.Hfa1,short,ABIStress.S12U,ABIStress.S2P,int,ABIStress.S13U,float):int[] (FullOpts)
        -418 (-21.57 % of base) : 395186.dasm - (dynamicClass):ABIStress_PInvoker810(ABIStress.S4P,ABIStress.S13U,ABIStress.S6U):int[] (FullOpts)
        -416 (-23.34 % of base) : 395472.dasm - (dynamicClass):ABIStress_PInvoker963(ABIStress.S2P,ubyte,ABIStress.S31U,ABIStress.S16U,ABIStress.S11U,ABIStress.S11U,ABIStress.S7U,ABIStress.I128_2,ABIStress.S9U,ABIStress.S1P,ubyte):int[] (FullOpts)
        -410 (-19.54 % of base) : 394460.dasm - (dynamicClass):ABIStress_PInvoker431(ABIStress.S10U,ABIStress.S8P,ABIStress.S12U,ABIStress.S2P,ABIStress.Hfa2):int[] (FullOpts)
        -408 (-25.15 % of base) : 395454.dasm - (dynamicClass):ABIStress_PInvoker953(ABIStress.Hfa2,ABIStress.I128_1,ABIStress.S12U,ABIStress.S1P,ABIStress.S16U,ABIStress.S2U,ABIStress.S10U,ABIStress.Hfa2,ABIStress.S12U,int,ABIStress.S14U,short,float,ABIStress.S11U,ABIStress.S17U,ABIStress.Hfa2,ubyte,ABIStress.S32U,ABIStress.S11U,ubyte,ABIStress.I128_1,System.Int128,ABIStress.S4P):int[] (FullOpts)
        -400 (-36.63 % of base) : 393683.dasm - (dynamicClass):ABIStress_PInvoker34(ABIStress.S16U,ABIStress.S5U,float,ABIStress.S7U,ubyte,ABIStress.S15U,ABIStress.Hfa2,ABIStress.S17U,ABIStress.S14U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S9U,ABIStress.S12U,System.Numerics.Vector`1[int],ABIStress.S13U,ABIStress.S2P,short,ABIStress.S11U,ubyte,ABIStress.S4P,ABIStress.S10U,float):int[] (FullOpts)
        -400 (-33.33 % of base) : 395305.dasm - (dynamicClass):ABIStress_PInvoker874(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.Hfa1,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S8P,ABIStress.S13U,ABIStress.Hfa2,int,int,int,ABIStress.S9U,float,ABIStress.S4U,ABIStress.S31U,ABIStress.S11U,ABIStress.S2P,ABIStress.S11U,ABIStress.S12U,ubyte,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.I128_1,ABIStress.S15U,long,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S1P):int[] (FullOpts)
        -396 (-26.72 % of base) : 394432.dasm - (dynamicClass):ABIStress_PInvoker417(ubyte,ABIStress.Hfa2,ABIStress.I128_1,System.Int128,ABIStress.S5U,System.Numerics.Vector`1[int],ABIStress.S8U,ABIStress.S8P,float,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S11U,ABIStress.S31U,ABIStress.S17U,ABIStress.S2P,ABIStress.S10U,ABIStress.Hfa1,ABIStress.S5U,ABIStress.I128_2,ABIStress.S6U,ABIStress.S6U,ABIStress.S8U,ABIStress.S15U,ABIStress.S4P,ABIStress.I128_2):int[] (FullOpts)
        -388 (-31.29 % of base) : 389332.dasm - (dynamicClass):InvokeStub_ABIStress_PInvokee6022(System.Object,System.Span`1[System.Object]):System.Object (FullOpts)

Top method regressions (percentages):
          44 (13.02 % of base) : 413230.dasm - Test_10w5d.testout1:Func_0():int (FullOpts)
          44 (12.87 % of base) : 406809.dasm - Test_10w5d.testout1:Func_0():int (FullOpts)
          16 (10.96 % of base) : 378634.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (10.81 % of base) : 378545.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
          66 (10.22 % of base) : 332783.dasm - VectorMgdMgd+HVATests`1[ubyte]:Init_HVAs():this (FullOpts)
           6 (6.67 % of base) : 383438.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
          36 (6.29 % of base) : 414257.dasm - Test_10w5d.testout1:Func_0_5_6_6():double (FullOpts)
          36 (6.25 % of base) : 408042.dasm - Test_10w5d.testout1:Func_0_5_6_6():double (FullOpts)
          32 (5.52 % of base) : 295035.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
           4 (5.26 % of base) : 424163.dasm - ILGEN_0xc2f3d0c8:Method_0x5cc2(double):int (FullOpts)
          28 (4.84 % of base) : 292733.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          26 (4.51 % of base) : 176811.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          26 (4.51 % of base) : 191688.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          26 (4.51 % of base) : 313717.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 124163.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 66996.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 150608.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 212832.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 71451.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 121808.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)

Top method improvements (percentages):
        -286 (-43.60 % of base) : 398009.dasm - (dynamicClass):ABIStress_TailCaller800(ABIStress.S16U,ABIStress.S3U,ABIStress.S8U,ABIStress.S4P,ABIStress.S2P,ubyte,ABIStress.S15U,ABIStress.S10U,ABIStress.S17U,ABIStress.S5U,ABIStress.S11U,ABIStress.Hfa2,ABIStress.S14U,ABIStress.S16U,ABIStress.S2P,ABIStress.S7U,int,ABIStress.S4P,ABIStress.S11U,ABIStress.S32U,ABIStress.S8P,ABIStress.S32U,ABIStress.S14U,float):int (FullOpts)
        -354 (-43.60 % of base) : 397542.dasm - (dynamicClass):ABIStress_TailCaller638(ABIStress.S11U,ABIStress.S31U,ABIStress.S31U,ABIStress.S10U,ABIStress.S9U,ABIStress.S32U,ABIStress.S17U,ABIStress.S17U,ABIStress.S14U,ABIStress.S10U,ABIStress.S15U,ABIStress.Hfa1,long,ABIStress.S8U,ABIStress.S17U,ABIStress.S5U,ABIStress.Hfa2):int (FullOpts)
        -296 (-42.65 % of base) : 397314.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -298 (-40.82 % of base) : 398305.dasm - (dynamicClass):ABIStress_TailCaller902(ABIStress.S7U,ABIStress.S17U,ABIStress.S2P,ABIStress.S32U,ABIStress.S10U,ubyte,ubyte,short,ABIStress.S9U,double,int,ABIStress.S13U,ubyte,ABIStress.S1P,ABIStress.S8U,ABIStress.S1P,ubyte,ABIStress.S32U,float,ABIStress.S2P,ABIStress.S1P,ABIStress.S10U,ABIStress.S14U,ABIStress.S16U,ABIStress.S10U):int (FullOpts)
        -294 (-39.95 % of base) : 395769.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -290 (-39.62 % of base) : 396823.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -246 (-39.42 % of base) : 397678.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -246 (-39.42 % of base) : 397585.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -236 (-39.33 % of base) : 397302.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -248 (-38.87 % of base) : 397775.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -206 (-38.01 % of base) : 397276.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -286 (-37.93 % of base) : 398340.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -104 (-37.68 % of base) : 398356.dasm - (dynamicClass):ABIStress_TailCaller919(ABIStress.S4U,ABIStress.S8U,ABIStress.S7U,ABIStress.S1P,ABIStress.S8P,long,ABIStress.S14U,ABIStress.S6U,ABIStress.S12U,ABIStress.S12U,ABIStress.S17U,ABIStress.S14U,ABIStress.S9U,ABIStress.S10U,ABIStress.S11U,ABIStress.S6U,ABIStress.S1P,ABIStress.S13U,ABIStress.Hfa2,ABIStress.S15U):int (FullOpts)
        -238 (-37.66 % of base) : 396718.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -180 (-37.50 % of base) : 395605.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -138 (-37.50 % of base) : 395841.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -128 (-37.21 % of base) : 395962.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -358 (-36.98 % of base) : 397657.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -248 (-36.80 % of base) : 396003.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
        -298 (-36.70 % of base) : 396680.dasm - (dynamicClass):ABIStress_TailCaller361(ABIStress.S1P,ABIStress.S8P,ABIStress.S8U,ABIStress.Hfa2,ABIStress.S4U,ABIStress.Hfa2,ABIStress.S12U,int,ABIStress.Hfa2,ABIStress.S31U,ABIStress.S12U,ABIStress.S6U,ABIStress.S11U,ABIStress.S14U,ABIStress.Hfa1,ABIStress.S31U):int (FullOpts)


libraries.crossgen2.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 35175262 (overridden on cmd)
Total bytes of diff: 35170094 (overridden on cmd)
Total bytes of delta: -5168 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          70 : 26163.dasm (9.00 % of base)
          52 : 11625.dasm (1.25 % of base)
          46 : 61683.dasm (10.70 % of base)
          30 : 128331.dasm (6.52 % of base)
          28 : 25114.dasm (1.07 % of base)
          22 : 50308.dasm (1.80 % of base)
          12 : 93825.dasm (2.78 % of base)
          10 : 61825.dasm (1.50 % of base)
           8 : 189536.dasm (3.05 % of base)
           8 : 82072.dasm (0.60 % of base)
           4 : 132213.dasm (1.12 % of base)
           4 : 134448.dasm (3.12 % of base)
           4 : 151059.dasm (1.50 % of base)
           4 : 4318.dasm (2.17 % of base)
           4 : 171889.dasm (1.68 % of base)
           4 : 127172.dasm (0.69 % of base)
           4 : 132341.dasm (1.12 % of base)
           4 : 145744.dasm (0.80 % of base)
           4 : 148782.dasm (1.18 % of base)
           4 : 60567.dasm (0.20 % of base)

Top file improvements (bytes):
        -196 : 101469.dasm (-0.60 % of base)
        -186 : 83385.dasm (-2.94 % of base)
        -126 : 25086.dasm (-0.48 % of base)
         -90 : 27256.dasm (-2.27 % of base)
         -86 : 50654.dasm (-17.06 % of base)
         -86 : 27378.dasm (-20.28 % of base)
         -82 : 83381.dasm (-22.91 % of base)
         -80 : 115534.dasm (-9.13 % of base)
         -70 : 153952.dasm (-5.35 % of base)
         -54 : 153964.dasm (-6.72 % of base)
         -54 : 21272.dasm (-3.69 % of base)
         -50 : 83376.dasm (-10.68 % of base)
         -50 : 83374.dasm (-12.14 % of base)
         -50 : 83375.dasm (-5.40 % of base)
         -50 : 161352.dasm (-14.04 % of base)
         -50 : 148732.dasm (-0.71 % of base)
         -48 : 27387.dasm (-16.11 % of base)
         -46 : 50657.dasm (-14.02 % of base)
         -46 : 22715.dasm (-3.47 % of base)
         -46 : 27203.dasm (-12.71 % of base)

71 total files with Code Size differences (43 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
          70 (9.00 % of base) : 26163.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (FullOpts)
          52 (1.25 % of base) : 11625.dasm - System.TimeZoneInfo:GetAdjustmentRules():System.TimeZoneInfo+AdjustmentRule[]:this (FullOpts)
          46 (10.70 % of base) : 61683.dasm - Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource:TryGetCompleteBuffer(Microsoft.Diagnostics.Tracing.Utilities.FastStream,uint,double,int,byref):ubyte:this (FullOpts)
          30 (6.52 % of base) : 128331.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
          28 (1.07 % of base) : 25114.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompiler:CreateCompilation(System.IO.TextWriter,Microsoft.CodeAnalysis.TouchedFileLogger,Microsoft.CodeAnalysis.ErrorLogger,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult):Microsoft.CodeAnalysis.Compilation:this (FullOpts)
          22 (1.80 % of base) : 50308.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:InitializeNewSymbols(System.Collections.Generic.List`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]],Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.CSharp.Symbols.MissingAssemblySymbol]) (FullOpts)
          12 (2.78 % of base) : 93825.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:SelectManyAsArrayAsync[System.__Canon,System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`4[System.__Canon,System.__Canon,System.Threading.CancellationToken,System.Threading.Tasks.ValueTask`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]],System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
          10 (1.50 % of base) : 61825.dasm - Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode:FoldNodesUnder(float,System.Collections.Generic.Dictionary`2[int,Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase]):int:this (FullOpts)
           8 (0.60 % of base) : 82072.dasm - Microsoft.CodeAnalysis.CompilationOptions:GetHashCodeHelper():int:this (FullOpts)
           8 (3.05 % of base) : 189536.dasm - System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder:ReadX509Time(byref):System.DateTimeOffset (FullOpts)
           4 (2.17 % of base) : 4318.dasm - <StartupCode$FSharp-Core>.$Async+taskCtxt@1645[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
           4 (0.80 % of base) : 145744.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager:SubstEqualTypesCore(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):ubyte (FullOpts)
           4 (0.20 % of base) : 60567.dasm - Microsoft.Diagnostics.Tracing.ETWTraceEventSource:InitializeFiles():this (FullOpts)
           4 (0.69 % of base) : 127172.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:ReorderArgumentArray(byref,System.Object):this (FullOpts)
           4 (1.12 % of base) : 132213.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:AppendFrom(System.Collections.Generic.SegmentedList`1[System.__Canon],long,long):this (FullOpts)
           4 (1.12 % of base) : 132341.dasm - System.Collections.Generic.SegmentedList`1[ubyte]:AppendFrom(System.Collections.Generic.SegmentedList`1[ubyte],long,long):this (FullOpts)
           4 (3.12 % of base) : 134448.dasm - System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
           4 (1.68 % of base) : 171889.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8Prefixed(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (FullOpts)
           4 (1.50 % of base) : 151059.dasm - System.Runtime.Serialization.ObjectManager:DoNewlyRegisteredObjectFixups(System.Runtime.Serialization.ObjectHolder):this (FullOpts)
           4 (1.18 % of base) : 148782.dasm - System.Text.RegularExpressions.GroupCollection:GetGroupImpl(int):System.Text.RegularExpressions.Group:this (FullOpts)

Top method improvements (bytes):
        -196 (-0.60 % of base) : 101469.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
        -186 (-2.94 % of base) : 83385.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
        -126 (-0.48 % of base) : 25086.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
         -90 (-2.27 % of base) : 27256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitForEachExpression(Microsoft.CodeAnalysis.CSharp.BoundForEachStatement):this (FullOpts)
         -86 (-20.28 % of base) : 27378.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -86 (-17.06 % of base) : 50654.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass169_0:<VisitObjectElementInitializer>b__10(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
         -82 (-22.91 % of base) : 83381.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedParseOptions(Microsoft.CodeAnalysis.ParseOptions):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -80 (-9.13 % of base) : 115534.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions:.ctor(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions):this (FullOpts)
         -70 (-5.35 % of base) : 153952.dasm - System.Formats.Asn1.AsnWriter:WriteGeneralizedTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset,ubyte):this (FullOpts)
         -54 (-3.69 % of base) : 21272.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
         -54 (-6.72 % of base) : 153964.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
         -50 (-12.14 % of base) : 83374.dasm - Microsoft.CodeAnalysis.GeneratorDriver:AddGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -50 (-10.68 % of base) : 83376.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RemoveGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -50 (-5.40 % of base) : 83375.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -50 (-14.04 % of base) : 161352.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.Guid):this (FullOpts)
         -50 (-0.71 % of base) : 148732.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -48 (-16.11 % of base) : 27387.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -46 (-3.47 % of base) : 22715.dasm - Microsoft.CodeAnalysis.CSharp.Conversions:ReportDelegateOrFunctionPointerMethodGroupDiagnostics(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte (FullOpts)
         -46 (-12.71 % of base) : 27203.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackAnalyzedNullabilityThroughConversionGroup(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
         -46 (-14.02 % of base) : 50657.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass171_0:<VisitCollectionElementInitializer>b__3(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)

Top method regressions (percentages):
          46 (10.70 % of base) : 61683.dasm - Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource:TryGetCompleteBuffer(Microsoft.Diagnostics.Tracing.Utilities.FastStream,uint,double,int,byref):ubyte:this (FullOpts)
          70 (9.00 % of base) : 26163.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (FullOpts)
          30 (6.52 % of base) : 128331.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
           4 (3.12 % of base) : 134448.dasm - System.Net.Sockets.UnixDomainSocketEndPoint:.cctor() (FullOpts)
           8 (3.05 % of base) : 189536.dasm - System.Security.Cryptography.X509Certificates.CertificateRevocationListBuilder:ReadX509Time(byref):System.DateTimeOffset (FullOpts)
          12 (2.78 % of base) : 93825.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:SelectManyAsArrayAsync[System.__Canon,System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`4[System.__Canon,System.__Canon,System.Threading.CancellationToken,System.Threading.Tasks.ValueTask`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]]],System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Collections.Immutable.ImmutableArray`1[System.__Canon]] (FullOpts)
           2 (2.33 % of base) : 14673.dasm - System.Text.Encoding:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte]):int:this (FullOpts)
           2 (2.33 % of base) : 14679.dasm - System.Text.Encoding:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort]):int:this (FullOpts)
           4 (2.17 % of base) : 4318.dasm - <StartupCode$FSharp-Core>.$Async+taskCtxt@1645[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
           2 (2.17 % of base) : 14549.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (FullOpts)
           2 (2.17 % of base) : 14594.dasm - System.Text.Encoder:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte):int:this (FullOpts)
           2 (1.82 % of base) : 57710.dasm - System.Data.Common.SqlUdtStorage:Copy(int,int):this (FullOpts)
           2 (1.82 % of base) : 14550.dasm - System.Text.Decoder:Convert(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte,byref,byref,byref):this (FullOpts)
           2 (1.82 % of base) : 14595.dasm - System.Text.Encoder:Convert(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte,byref,byref,byref):this (FullOpts)
          22 (1.80 % of base) : 50308.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:InitializeNewSymbols(System.Collections.Generic.List`1[int],Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyData[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]],Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.CSharp.Symbols.MissingAssemblySymbol]) (FullOpts)
           4 (1.68 % of base) : 171889.dasm - System.Reflection.Internal.EncodingHelper:DecodeUtf8Prefixed(uint,int,ubyte[],System.Reflection.Metadata.MetadataStringDecoder):System.String (FullOpts)
           2 (1.59 % of base) : 144577.dasm - System.ComponentModel.Composition.ReflectionModel.GenericServices:Reorder[System.__Canon](System.__Canon[],int[]):System.__Canon[] (FullOpts)
           4 (1.50 % of base) : 151059.dasm - System.Runtime.Serialization.ObjectManager:DoNewlyRegisteredObjectFixups(System.Runtime.Serialization.ObjectHolder):this (FullOpts)
          10 (1.50 % of base) : 61825.dasm - Microsoft.Diagnostics.Tracing.Stacks.CallTreeNode:FoldNodesUnder(float,System.Collections.Generic.Dictionary`2[int,Microsoft.Diagnostics.Tracing.Stacks.CallTreeNodeBase]):int:this (FullOpts)
          52 (1.25 % of base) : 11625.dasm - System.TimeZoneInfo:GetAdjustmentRules():System.TimeZoneInfo+AdjustmentRule[]:this (FullOpts)

Top method improvements (percentages):
         -22 (-26.83 % of base) : 160244.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Guid]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -22 (-25.58 % of base) : 160238.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTimeOffset]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -22 (-25.58 % of base) : 160240.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Decimal]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -82 (-22.91 % of base) : 83381.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedParseOptions(Microsoft.CodeAnalysis.ParseOptions):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -44 (-22.22 % of base) : 26979.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (FullOpts)
         -16 (-22.22 % of base) : 160237.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
         -16 (-22.22 % of base) : 160239.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Decimal):System.Text.Json.Nodes.JsonNode (FullOpts)
         -16 (-22.22 % of base) : 160243.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Guid):System.Text.Json.Nodes.JsonNode (FullOpts)
         -16 (-22.22 % of base) : 160242.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -16 (-22.22 % of base) : 160250.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -16 (-22.22 % of base) : 160236.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -16 (-22.22 % of base) : 160261.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -12 (-21.43 % of base) : 160235.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTime):System.Text.Json.Nodes.JsonNode (FullOpts)
         -12 (-21.43 % of base) : 160254.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[float]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -12 (-21.43 % of base) : 160248.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[int]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -12 (-21.43 % of base) : 160259.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[uint]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -86 (-20.28 % of base) : 27378.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -86 (-17.06 % of base) : 50654.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass169_0:<VisitObjectElementInitializer>b__10(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
         -20 (-16.39 % of base) : 160334.dasm - System.Text.Json.Nodes.JsonValue:Create(System.DateTimeOffset,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue (FullOpts)
         -20 (-16.39 % of base) : 160336.dasm - System.Text.Json.Nodes.JsonValue:Create(System.Decimal,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue (FullOpts)


libraries.pmi.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49615946 (overridden on cmd)
Total bytes of diff: 49609936 (overridden on cmd)
Total bytes of delta: -6010 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         332 : 93266.dasm (8.65 % of base)
          38 : 93353.dasm (18.45 % of base)
          32 : 234091.dasm (2.15 % of base)
          32 : 175198.dasm (4.65 % of base)
          20 : 175135.dasm (6.25 % of base)
          20 : 208466.dasm (8.77 % of base)
          20 : 120287.dasm (0.47 % of base)
          16 : 79893.dasm (8.51 % of base)
          16 : 79894.dasm (8.51 % of base)
          16 : 79897.dasm (8.51 % of base)
          16 : 79898.dasm (8.51 % of base)
          16 : 79904.dasm (8.51 % of base)
          16 : 79905.dasm (8.42 % of base)
          16 : 79899.dasm (8.51 % of base)
          16 : 79900.dasm (8.51 % of base)
          16 : 158029.dasm (0.41 % of base)
          16 : 79895.dasm (8.51 % of base)
          16 : 79896.dasm (8.51 % of base)
          12 : 233687.dasm (2.65 % of base)
          12 : 93508.dasm (1.86 % of base)

Top file improvements (bytes):
        -196 : 195225.dasm (-5.75 % of base)
        -194 : 93205.dasm (-4.85 % of base)
        -150 : 131818.dasm (-1.96 % of base)
        -126 : 154307.dasm (-6.00 % of base)
         -96 : 59215.dasm (-2.15 % of base)
         -92 : 59338.dasm (-21.10 % of base)
         -92 : 87069.dasm (-16.97 % of base)
         -84 : 131815.dasm (-23.86 % of base)
         -80 : 131814.dasm (-22.86 % of base)
         -68 : 153068.dasm (-0.90 % of base)
         -58 : 178853.dasm (-4.90 % of base)
         -58 : 273103.dasm (-1.82 % of base)
         -56 : 53069.dasm (-3.66 % of base)
         -52 : 59168.dasm (-4.26 % of base)
         -50 : 87083.dasm (-3.92 % of base)
         -50 : 59131.dasm (-1.77 % of base)
         -50 : 131808.dasm (-4.17 % of base)
         -50 : 59347.dasm (-10.68 % of base)
         -50 : 87072.dasm (-10.33 % of base)
         -48 : 59097.dasm (-0.94 % of base)

68 total files with Code Size differences (42 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
         332 (8.65 % of base) : 93266.dasm - System.Data.RBTree`1[ubyte]:RBDeleteX(int,int,int):int:this (FullOpts)
          38 (18.45 % of base) : 93353.dasm - System.Data.RBTree`1[System.Numerics.Vector`1[float]]:Search(System.Numerics.Vector`1[float]):int:this (FullOpts)
          32 (4.65 % of base) : 175198.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:DownHeap(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],int,int,int,System.Collections.Generic.IComparer`1[ubyte]) (FullOpts)
          32 (2.15 % of base) : 234091.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
          20 (8.77 % of base) : 208466.dasm - Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:set_Item(System.Numerics.Vector`1[float],System.Nullable`1[int]):this (FullOpts)
          20 (6.25 % of base) : 175135.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:SwapIfGreater(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Comparison`1[ubyte],int,int) (FullOpts)
          20 (0.47 % of base) : 120287.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
          16 (8.51 % of base) : 79904.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (8.51 % of base) : 79896.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Company():System.String:this (FullOpts)
          16 (8.51 % of base) : 79899.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Copyright():System.String:this (FullOpts)
          16 (8.51 % of base) : 79895.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Description():System.String:this (FullOpts)
          16 (8.51 % of base) : 79893.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_FileVersion():System.String:this (FullOpts)
          16 (8.51 % of base) : 79898.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_InformationalVersion():System.String:this (FullOpts)
          16 (8.51 % of base) : 79897.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Product():System.String:this (FullOpts)
          16 (8.42 % of base) : 79905.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
          16 (8.51 % of base) : 79894.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Title():System.String:this (FullOpts)
          16 (8.51 % of base) : 79900.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Trademark():System.String:this (FullOpts)
          16 (0.41 % of base) : 158029.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
          12 (2.65 % of base) : 233687.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:LeastGenericProcedure(Microsoft.VisualBasic.CompilerServices.Symbols+Method,Microsoft.VisualBasic.CompilerServices.Symbols+Method,int,byref):Microsoft.VisualBasic.CompilerServices.Symbols+Method (FullOpts)
          12 (1.86 % of base) : 93508.dasm - System.Data.Index:GetRows(System.Data.Range):System.Data.DataRow[]:this (FullOpts)

Top method improvements (bytes):
        -196 (-5.75 % of base) : 195225.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
        -194 (-4.85 % of base) : 93205.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (FullOpts)
        -150 (-1.96 % of base) : 131818.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
        -126 (-6.00 % of base) : 154307.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
         -96 (-2.15 % of base) : 59215.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitForEachExpression(Microsoft.CodeAnalysis.CSharp.BoundForEachStatement):this (FullOpts)
         -92 (-21.10 % of base) : 59338.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -92 (-16.97 % of base) : 87069.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass169_0:<VisitObjectElementInitializer>b__10(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
         -84 (-23.86 % of base) : 131815.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedAnalyzerConfigOptions(Microsoft.CodeAnalysis.Diagnostics.AnalyzerConfigOptionsProvider):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -80 (-22.86 % of base) : 131814.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedParseOptions(Microsoft.CodeAnalysis.ParseOptions):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -68 (-0.90 % of base) : 153068.dasm - System.Xml.Schema.XdrBuilder:.cctor() (FullOpts)
         -58 (-1.82 % of base) : 273103.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
         -58 (-4.90 % of base) : 178853.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.Guid):this (FullOpts)
         -56 (-3.66 % of base) : 53069.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
         -52 (-4.26 % of base) : 59168.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDelegateCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -50 (-10.68 % of base) : 59347.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -50 (-1.77 % of base) : 59131.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArgumentOutboundAssignmentsAndPostConditions(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.NullableWalker+CompareExchangeInfo):this (FullOpts)
         -50 (-10.33 % of base) : 87072.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass171_0:<VisitCollectionElementInitializer>b__3(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
         -50 (-3.92 % of base) : 87083.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass449_0:<VisitSwitchExpressionCore>g__convertArms|0(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
         -50 (-4.17 % of base) : 131808.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -48 (-0.94 % of base) : 59097.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConditionalAccess(Microsoft.CodeAnalysis.CSharp.BoundConditionalAccess,byref):this (FullOpts)

Top method regressions (percentages):
          38 (18.45 % of base) : 93353.dasm - System.Data.RBTree`1[System.Numerics.Vector`1[float]]:Search(System.Numerics.Vector`1[float]):int:this (FullOpts)
          20 (8.77 % of base) : 208466.dasm - Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:set_Item(System.Numerics.Vector`1[float],System.Nullable`1[int]):this (FullOpts)
         332 (8.65 % of base) : 93266.dasm - System.Data.RBTree`1[ubyte]:RBDeleteX(int,int,int):int:this (FullOpts)
          16 (8.51 % of base) : 79904.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (8.51 % of base) : 79896.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Company():System.String:this (FullOpts)
          16 (8.51 % of base) : 79899.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Copyright():System.String:this (FullOpts)
          16 (8.51 % of base) : 79895.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Description():System.String:this (FullOpts)
          16 (8.51 % of base) : 79893.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_FileVersion():System.String:this (FullOpts)
          16 (8.51 % of base) : 79898.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_InformationalVersion():System.String:this (FullOpts)
          16 (8.51 % of base) : 79897.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Product():System.String:this (FullOpts)
          16 (8.51 % of base) : 79894.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Title():System.String:this (FullOpts)
          16 (8.51 % of base) : 79900.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_Trademark():System.String:this (FullOpts)
          16 (8.42 % of base) : 79905.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
           6 (6.67 % of base) : 165266.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
          20 (6.25 % of base) : 175135.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:SwapIfGreater(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Comparison`1[ubyte],int,int) (FullOpts)
           6 (5.88 % of base) : 10414.dasm - System.Collections.Generic.HashSet`1[long]:TryGetValue(long,byref):ubyte:this (FullOpts)
           6 (5.36 % of base) : 244933.dasm - System.Collections.Generic.GrowableArray`1[ubyte]:Search[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],int,System.Func`3[System.Numerics.Vector`1[float],ubyte,int],byref):ubyte:this (FullOpts)
           6 (5.26 % of base) : 244894.dasm - System.Collections.Generic.GrowableArray`1[System.__Canon]:Search[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float],int,System.Func`3[System.Numerics.Vector`1[float],System.__Canon,int],byref):ubyte:this (FullOpts)
          32 (4.65 % of base) : 175198.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:DownHeap(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],int,int,int,System.Collections.Generic.IComparer`1[ubyte]) (FullOpts)
           8 (4.55 % of base) : 208468.dasm - Microsoft.Build.Collections.ArrayDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:ContainsKey(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)

Top method improvements (percentages):
         -46 (-25.00 % of base) : 58936.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (FullOpts)
         -18 (-25.00 % of base) : 179186.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -18 (-25.00 % of base) : 179194.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -18 (-25.00 % of base) : 179180.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -18 (-25.00 % of base) : 179205.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -84 (-23.86 % of base) : 131815.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedAnalyzerConfigOptions(Microsoft.CodeAnalysis.Diagnostics.AnalyzerConfigOptionsProvider):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -80 (-22.86 % of base) : 131814.dasm - Microsoft.CodeAnalysis.GeneratorDriver:WithUpdatedParseOptions(Microsoft.CodeAnalysis.ParseOptions):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -92 (-21.10 % of base) : 59338.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -46 (-20.00 % of base) : 59408.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
         -46 (-18.11 % of base) : 59406.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__setAnalyzedNullability|278_0(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
         -92 (-16.97 % of base) : 87069.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass169_0:<VisitObjectElementInitializer>b__10(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
         -46 (-16.43 % of base) : 59332.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectCreationExpressionBase>g__setAnalyzedNullability|167_0(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Func`3[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int],System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
         -38 (-15.83 % of base) : 131813.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -24 (-15.58 % of base) : 52989.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMethodGroupDelegateType(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
         -46 (-15.13 % of base) : 87078.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass278_0:<VisitDelegateCreationExpression>b__11(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
          -8 (-14.81 % of base) : 179179.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTime):System.Text.Json.Nodes.JsonNode (FullOpts)
          -8 (-14.81 % of base) : 179198.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[float]):System.Text.Json.Nodes.JsonNode (FullOpts)
          -8 (-14.81 % of base) : 179192.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[int]):System.Text.Json.Nodes.JsonNode (FullOpts)
          -8 (-14.81 % of base) : 179203.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[uint]):System.Text.Json.Nodes.JsonNode (FullOpts)
         -36 (-13.64 % of base) : 179163.dasm - System.Text.Json.Nodes.JsonNode:ReplaceWith[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):this (FullOpts)


libraries_tests.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 242762120 (overridden on cmd)
Total bytes of diff: 242678846 (overridden on cmd)
Total bytes of delta: -83274 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         332 : 257157.dasm (8.65 % of base)
          50 : 93931.dasm (1.33 % of base)
          36 : 331522.dasm (2.86 % of base)
          36 : 93180.dasm (0.93 % of base)
          34 : 446975.dasm (0.82 % of base)
          30 : 191771.dasm (2.12 % of base)
          28 : 126311.dasm (4.84 % of base)
          24 : 534251.dasm (4.12 % of base)
          24 : 534269.dasm (4.12 % of base)
          24 : 444088.dasm (0.63 % of base)
          20 : 567552.dasm (1.16 % of base)
          16 : 94902.dasm (1.12 % of base)
          14 : 379134.dasm (3.91 % of base)
          14 : 393694.dasm (3.91 % of base)
          14 : 334184.dasm (1.82 % of base)
          14 : 76672.dasm (0.64 % of base)
          12 : 337786.dasm (1.55 % of base)
          12 : 520600.dasm (1.46 % of base)
          12 : 255961.dasm (1.85 % of base)
          10 : 337171.dasm (1.11 % of base)

Top file improvements (bytes):
       -1100 : 262311.dasm (-6.25 % of base)
        -478 : 560764.dasm (-2.55 % of base)
        -342 : 439121.dasm (-4.08 % of base)
        -294 : 443414.dasm (-3.46 % of base)
        -268 : 443423.dasm (-3.21 % of base)
        -194 : 257794.dasm (-4.85 % of base)
        -182 : 182791.dasm (-2.45 % of base)
        -178 : 293730.dasm (-2.11 % of base)
        -164 : 671018.dasm (-1.45 % of base)
        -140 : 18184.dasm (-1.71 % of base)
        -138 : 86630.dasm (-0.72 % of base)
        -136 : 430029.dasm (-2.30 % of base)
        -136 : 443391.dasm (-1.79 % of base)
        -136 : 443280.dasm (-3.20 % of base)
        -128 : 35890.dasm (-11.39 % of base)
        -126 : 265451.dasm (-5.92 % of base)
        -124 : 144266.dasm (-12.86 % of base)
        -124 : 12696.dasm (-12.86 % of base)
        -124 : 157579.dasm (-12.86 % of base)
        -120 : 151175.dasm (-3.22 % of base)

85 total files with Code Size differences (54 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
         332 (8.65 % of base) : 257157.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (Tier0-FullOpts)
          50 (1.33 % of base) : 93931.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:InsertNodesAfter(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxNode]):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
          36 (0.93 % of base) : 93180.dasm - Microsoft.CodeAnalysis.CSharp.CodeGeneration.CSharpSyntaxGenerator:RemoveNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,int):Microsoft.CodeAnalysis.SyntaxNode:this (Tier1)
          36 (2.86 % of base) : 331522.dasm - System.IO.BinaryReader:ReadBytes(int):ubyte[]:this (Tier1)
          34 (0.82 % of base) : 446975.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
          30 (2.12 % of base) : 191771.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (Tier0-FullOpts)
          28 (4.84 % of base) : 126311.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 534251.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 534269.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (0.63 % of base) : 444088.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (Tier1)
          20 (1.16 % of base) : 567552.dasm - System.Security.Cryptography.UniversalCryptoDecryptor:UncheckedTransformFinalBlock(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):int:this (Tier1)
          16 (1.12 % of base) : 94902.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Instrumented Tier1)
          14 (0.64 % of base) : 76672.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNodeRemover+SyntaxRemover:VisitList[System.__Canon](Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]):Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:this (Tier0-FullOpts)
          14 (3.91 % of base) : 379134.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
          14 (3.91 % of base) : 393694.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
          14 (1.82 % of base) : 334184.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
          12 (1.46 % of base) : 520600.dasm - System.Array+SorterObjectArray:IntroSort(int,int,int):this (Tier1)
          12 (1.85 % of base) : 255961.dasm - System.Data.Index:GetRows(System.Data.Range):System.Data.DataRow[]:this (Tier0-FullOpts)
          12 (1.55 % of base) : 337786.dasm - System.Text.Encoding:GetBytesWithFallback(uint,int,uint,int,int,int,System.Text.EncoderNLS):int:this (Instrumented Tier1)
          10 (1.11 % of base) : 337171.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (Instrumented Tier1)

Top method improvements (bytes):
       -1100 (-6.25 % of base) : 262311.dasm - System.Xml.Schema.SchemaNames:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
        -478 (-2.55 % of base) : 560764.dasm - System.Security.Cryptography.Tests.CryptoConfigTests+<get_AllValidNames>d__27:MoveNext():ubyte:this (Instrumented Tier0)
        -342 (-4.08 % of base) : 439121.dasm - System.Xml.Xsl.Xslt.KeywordsTable:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
        -294 (-3.46 % of base) : 443414.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
        -268 (-3.21 % of base) : 443423.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitDocOrderDistinct(System.Xml.Xsl.Qil.QilUnary):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
        -194 (-4.85 % of base) : 257794.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (Tier0-FullOpts)
        -182 (-2.45 % of base) : 182791.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Instrumented Tier0)
        -178 (-2.11 % of base) : 293730.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.array005.array005.Program:Test(System.Object):int (Instrumented Tier0)
        -164 (-1.45 % of base) : 671018.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConditionalOperatorCore(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
        -140 (-1.71 % of base) : 18184.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (Tier0-FullOpts)
        -138 (-0.72 % of base) : 86630.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNeverOverflowBinaryOperators(int,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.ConstantValue):System.Object (Instrumented Tier0)
        -136 (-2.30 % of base) : 430029.dasm - System.Xml.Serialization.XmlSerializationReader:InitPrimitiveIDs():this (Instrumented Tier0)
        -136 (-1.79 % of base) : 443391.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitLoop(System.Xml.Xsl.Qil.QilLoop):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
        -136 (-3.20 % of base) : 443280.dasm - System.Xml.Xsl.XPath.XPathBuilder:Function(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.Xsl.Qil.QilNode]):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
        -128 (-11.39 % of base) : 35890.dasm - NuGet.Configuration.SettingsFile+<>c__DisplayClass32_0:<ExecuteSynchronized>b__0():this (Instrumented Tier0)
        -126 (-5.92 % of base) : 265451.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
        -124 (-12.86 % of base) : 144266.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (Instrumented Tier0)
        -124 (-12.86 % of base) : 12696.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (Instrumented Tier0)
        -124 (-12.86 % of base) : 157579.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (Instrumented Tier0)
        -120 (-3.22 % of base) : 151175.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonMethod(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)

Top method regressions (percentages):
         332 (8.65 % of base) : 257157.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (Tier0-FullOpts)
           6 (6.67 % of base) : 500844.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (Tier1)
          28 (4.84 % of base) : 126311.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
           4 (4.76 % of base) : 473635.dasm - System.Reflection.MethodInfo:CreateDelegate[System.__Canon](System.Object):System.__Canon:this (Instrumented Tier1)
          24 (4.12 % of base) : 534251.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          24 (4.12 % of base) : 534269.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (Tier1)
          14 (3.91 % of base) : 379134.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
          14 (3.91 % of base) : 393694.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
          36 (2.86 % of base) : 331522.dasm - System.IO.BinaryReader:ReadBytes(int):ubyte[]:this (Tier1)
           8 (2.82 % of base) : 323114.dasm - System.IO.Tests.BaseGetSetTimes`1[System.__Canon]:CanGetAllTimesAfterCreation():this (Tier1)
           8 (2.31 % of base) : 713679.dasm - System.Threading.Tasks.Tests.TaskContinueWhenAllTests:makeCWAllTaskArrays(int,int,byref,byref) (Tier0-FullOpts)
          30 (2.12 % of base) : 191771.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (Tier0-FullOpts)
           8 (2.06 % of base) : 713663.dasm - System.Threading.Tasks.Tests.TaskContinueWhenAllTests:makeCWAllFutureArrays(int,int,byref,byref) (Tier0-FullOpts)
           6 (1.89 % of base) : 625031.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object,System.Guid):System.Object (FullOpts)
           4 (1.85 % of base) : 394647.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (Tier1)
           4 (1.85 % of base) : 712508.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (Tier1)
          12 (1.85 % of base) : 255961.dasm - System.Data.Index:GetRows(System.Data.Range):System.Data.DataRow[]:this (Tier0-FullOpts)
           2 (1.82 % of base) : 371193.dasm - System.Net.Http.Json.Functional.Tests.HttpClientJsonExtensionsTests:<AllowNullRequestUrlAsAsyncEnumerable>g__AssertPeopleEquality|11_2(System.Collections.Generic.List`1[System.Net.Http.Json.Functional.Tests.Person]) (Tier0-FullOpts)
          14 (1.82 % of base) : 334184.dasm - System.Net.Sockets.SocketPal:TryStartConnect(System.Net.Sockets.SafeSocketHandle,System.Memory`1[ubyte],byref):ubyte (Tier1)
           2 (1.82 % of base) : 367454.dasm - System.Text.Encoder:Convert(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte,byref,byref,byref):this (Tier1)

Top method improvements (percentages):
         -70 (-30.17 % of base) : 182574.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:Update(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:this (Instrumented Tier0)
         -46 (-25.00 % of base) : 183663.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (Tier1)
         -62 (-21.53 % of base) : 691189.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):this (Instrumented Tier0)
         -24 (-18.18 % of base) : 160849.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
         -24 (-18.18 % of base) : 24271.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
         -24 (-18.18 % of base) : 147008.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,byref,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]):ubyte (Instrumented Tier0)
         -38 (-16.67 % of base) : 405759.dasm - Kerberos.NET.Crypto.AESTransformer+<>c__DisplayClass17_0:<GetOrDeriveKey>b__0(System.ReadOnlyMemory`1[ubyte]):System.ReadOnlyMemory`1[ubyte]:this (Instrumented Tier0)
         -50 (-15.82 % of base) : 29767.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
         -28 (-15.73 % of base) : 548853.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 549817.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 564621.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 390910.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 540598.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 548742.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 548834.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 565065.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 565121.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 399909.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 564654.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
         -28 (-15.73 % of base) : 564761.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)


librariestestsnotieredcompilation.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 93201612 (overridden on cmd)
Total bytes of diff: 93193102 (overridden on cmd)
Total bytes of delta: -8510 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         332 : 92344.dasm (8.65 % of base)
         276 : 202454.dasm (7.11 % of base)
         188 : 202097.dasm (5.30 % of base)
         164 : 202200.dasm (8.53 % of base)
         128 : 203216.dasm (4.73 % of base)
          82 : 195647.dasm (4.52 % of base)
          82 : 194909.dasm (4.52 % of base)
          46 : 196972.dasm (2.53 % of base)
          46 : 199484.dasm (2.55 % of base)
          32 : 171253.dasm (1.03 % of base)
          32 : 60081.dasm (2.15 % of base)
          30 : 226716.dasm (1.57 % of base)
          16 : 5392.dasm (10.96 % of base)
          16 : 170215.dasm (0.42 % of base)
          16 : 45598.dasm (10.81 % of base)
          16 : 45767.dasm (10.96 % of base)
          16 : 5374.dasm (10.81 % of base)
          16 : 52420.dasm (10.81 % of base)
          16 : 52475.dasm (10.96 % of base)
          14 : 14822.dasm (1.38 % of base)

Top file improvements (bytes):
        -196 : 132076.dasm (-5.92 % of base)
        -194 : 90618.dasm (-4.85 % of base)
        -140 : 5379.dasm (-1.71 % of base)
        -122 : 95593.dasm (-7.47 % of base)
        -104 : 264282.dasm (-5.48 % of base)
         -74 : 266143.dasm (-2.43 % of base)
         -70 : 175111.dasm (-5.90 % of base)
         -60 : 17872.dasm (-3.97 % of base)
         -60 : 170376.dasm (-3.16 % of base)
         -60 : 171367.dasm (-3.97 % of base)
         -58 : 115219.dasm (-1.82 % of base)
         -58 : 255680.dasm (-4.90 % of base)
         -54 : 48546.dasm (-19.15 % of base)
         -54 : 175123.dasm (-4.69 % of base)
         -54 : 42667.dasm (-19.15 % of base)
         -50 : 3484.dasm (-15.82 % of base)
         -50 : 55779.dasm (-3.96 % of base)
         -50 : 29998.dasm (-5.58 % of base)
         -50 : 269840.dasm (-10.68 % of base)
         -48 : 266381.dasm (-4.12 % of base)

67 total files with Code Size differences (39 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
         332 (8.65 % of base) : 92344.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (FullOpts)
         276 (7.11 % of base) : 202454.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_LocalToUtc() (FullOpts)
         188 (5.30 % of base) : 202097.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_LocalToLocal() (FullOpts)
         164 (8.53 % of base) : 202200.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_UtcToLocal() (FullOpts)
         128 (4.73 % of base) : 203216.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_MiscUtc() (FullOpts)
          82 (4.52 % of base) : 195647.dasm - DataContractJsonSerializerTests:DCJS_DateTimeAsRoot() (FullOpts)
          82 (4.52 % of base) : 194909.dasm - DataContractJsonSerializerTests:DCJS_DateTimeAsRoot() (FullOpts)
          46 (2.53 % of base) : 196972.dasm - DataContractSerializerTests:DCS_TypeWithDatetimeOffsetTypeProperty() (FullOpts)
          46 (2.55 % of base) : 199484.dasm - DataContractSerializerTests:DCS_TypeWithDatetimeOffsetTypeProperty() (FullOpts)
          32 (1.03 % of base) : 171253.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
          32 (2.15 % of base) : 60081.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
          30 (1.57 % of base) : 226716.dasm - System.Security.Cryptography.Tests.HmacSha1Tests:HmacSha1_Byte_Constructors():this (FullOpts)
          16 (10.96 % of base) : 5392.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (10.96 % of base) : 45767.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (10.96 % of base) : 52475.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (10.81 % of base) : 45598.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
          16 (10.81 % of base) : 5374.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
          16 (10.81 % of base) : 52420.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
          16 (0.42 % of base) : 170215.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
          14 (1.38 % of base) : 14822.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.IndentBlockFormattingRule:AddBracketIndentationOperation(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation],Microsoft.CodeAnalysis.SyntaxNode) (FullOpts)

Top method improvements (bytes):
        -196 (-5.92 % of base) : 132076.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:MergeSortCooperatively():this (FullOpts)
        -194 (-4.85 % of base) : 90618.dasm - System.Data.RBTree`1[System.__Canon]:RBDeleteX(int,int,int):int:this (FullOpts)
        -140 (-1.71 % of base) : 5379.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
        -122 (-7.47 % of base) : 95593.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
        -104 (-5.48 % of base) : 264282.dasm - System.Text.Json.Nodes.Tests.OperatorTests:ImplicitOperators_FromNullableValues() (FullOpts)
         -74 (-2.43 % of base) : 266143.dasm - System.Text.Json.Nodes.Tests.ParseTests:Parse_TryGetValue() (FullOpts)
         -70 (-5.90 % of base) : 175111.dasm - System.Xml.XmlConvertTests.VerifyNameTests1:v1():int:this (FullOpts)
         -60 (-3.16 % of base) : 170376.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
         -60 (-3.97 % of base) : 171367.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
         -60 (-3.97 % of base) : 17872.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
         -58 (-1.82 % of base) : 115219.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
         -58 (-4.90 % of base) : 255680.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.Guid):this (FullOpts)
         -54 (-19.15 % of base) : 48546.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithDefaultNamespace(System.String):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
         -54 (-19.15 % of base) : 42667.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithDefaultNamespace(System.String):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
         -54 (-4.69 % of base) : 175123.dasm - System.Xml.XmlConvertTests.VerifyNameTests1:v3():int:this (FullOpts)
         -50 (-10.68 % of base) : 269840.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -50 (-3.96 % of base) : 55779.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass452_0:<VisitSwitchExpressionCore>g__convertArms|0(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
         -50 (-15.82 % of base) : 3484.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
         -50 (-5.58 % of base) : 29998.dasm - Microsoft.CodeAnalysis.Workspace:CreateProjectInfo(Microsoft.CodeAnalysis.Project):Microsoft.CodeAnalysis.ProjectInfo (FullOpts)
         -48 (-4.12 % of base) : 266381.dasm - System.Text.Json.Nodes.Tests.JsonNodeTests:GetValueKind() (FullOpts)

Top method regressions (percentages):
          16 (10.96 % of base) : 5392.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (10.96 % of base) : 45767.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (10.96 % of base) : 52475.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (10.81 % of base) : 45598.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
          16 (10.81 % of base) : 5374.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
          16 (10.81 % of base) : 52420.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
         332 (8.65 % of base) : 92344.dasm - System.Data.RBTree`1[int]:RBDeleteX(int,int,int):int:this (FullOpts)
         164 (8.53 % of base) : 202200.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_UtcToLocal() (FullOpts)
         276 (7.11 % of base) : 202454.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_LocalToUtc() (FullOpts)
           6 (6.67 % of base) : 101009.dasm - System.Xml.XmlBaseWriter+NamespaceManager:.ctor():this (FullOpts)
         188 (5.30 % of base) : 202097.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_LocalToLocal() (FullOpts)
          10 (4.90 % of base) : 178049.dasm - generatedProxy_1:TestMethod(int,System.String,double):double:this (FullOpts)
         128 (4.73 % of base) : 203216.dasm - System.Tests.TimeZoneInfoTests:ConvertTime_DateTime_MiscUtc() (FullOpts)
          82 (4.52 % of base) : 195647.dasm - DataContractJsonSerializerTests:DCJS_DateTimeAsRoot() (FullOpts)
          82 (4.52 % of base) : 194909.dasm - DataContractJsonSerializerTests:DCJS_DateTimeAsRoot() (FullOpts)
           4 (4.35 % of base) : 187297.dasm - System.Tests.ConvertTestBase`1+<>c__DisplayClass4_0`1[ulong,System.__Canon]:<VerifyFromStringWithBaseThrows>b__0():System.Object:this (FullOpts)
           8 (3.36 % of base) : 45590.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyKeyFileAttributeSetting():System.String:this (FullOpts)
           8 (3.36 % of base) : 52414.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyKeyFileAttributeSetting():System.String:this (FullOpts)
           8 (3.36 % of base) : 5366.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyKeyFileAttributeSetting():System.String:this (FullOpts)
           2 (3.23 % of base) : 196236.dasm - System.Runtime.Serialization.Schema.Tests.ImporterTests+<>c:<CanImport_MemberData>b__5_9(System.Runtime.Serialization.XsdDataContractImporter):ubyte:this (FullOpts)

Top method improvements (percentages):
         -54 (-19.15 % of base) : 48546.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithDefaultNamespace(System.String):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
         -54 (-19.15 % of base) : 42667.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithDefaultNamespace(System.String):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
         -50 (-15.82 % of base) : 3484.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
         -42 (-13.91 % of base) : 42548.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
         -42 (-13.91 % of base) : 48424.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
         -46 (-13.14 % of base) : 54718.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0:<VisitObjectCreationExpressionBase>b__5(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
         -30 (-12.82 % of base) : 259409.dasm - System.Text.Json.Nodes.JsonNode:ReplaceWith[System.Text.Json.JsonElement](System.Text.Json.JsonElement):this (FullOpts)
         -16 (-11.94 % of base) : 30001.dasm - Microsoft.CodeAnalysis.DocumentInfo:WithDesignTimeOnly(ubyte):Microsoft.CodeAnalysis.DocumentInfo:this (FullOpts)
         -16 (-10.81 % of base) : 90544.dasm - System.Data.RBTree`1+RBTreeEnumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -50 (-10.68 % of base) : 269840.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -10 (-10.64 % of base) : 94264.dasm - System.Data.ProviderBase.SchemaMapping:MappedIndex():this (FullOpts)
         -20 (-9.90 % of base) : 259329.dasm - System.Text.Json.Nodes.Tests.JsonValueTests:DeepEquals_EscapedString() (FullOpts)
          -6 (-9.68 % of base) : 196239.dasm - System.Runtime.Serialization.Schema.Tests.ImporterTests+<>c__DisplayClass5_0:<CanImport_MemberData>b__14(System.Runtime.Serialization.XsdDataContractImporter):ubyte:this (FullOpts)
          -6 (-9.68 % of base) : 196327.dasm - System.Runtime.Serialization.Schema.Tests.ImporterTests+<>c__DisplayClass7_0:<Import_MemberData>b__5(System.Runtime.Serialization.XsdDataContractImporter):this (FullOpts)
          -8 (-9.52 % of base) : 68399.dasm - System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
         -28 (-9.40 % of base) : 43406.dasm - Microsoft.CodeAnalysis.GeneratorDriver:StateWithPendingEditsApplied(Microsoft.CodeAnalysis.GeneratorDriverState):Microsoft.CodeAnalysis.GeneratorDriverState (FullOpts)
         -18 (-8.82 % of base) : 29226.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitConstructor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (FullOpts)
         -30 (-8.62 % of base) : 15995.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:ExactTypeArgumentInference(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):this (FullOpts)
         -10 (-8.33 % of base) : 266365.dasm - System.Text.Json.Nodes.Tests.JsonNodeTests+<>c:<AsMethods_Throws>b__8_0():System.Object:this (FullOpts)
         -10 (-8.33 % of base) : 266369.dasm - System.Text.Json.Nodes.Tests.JsonNodeTests+<>c:<AsMethods_Throws>b__8_3():System.Object:this (FullOpts)


realworld.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13613446 (overridden on cmd)
Total bytes of diff: 13611310 (overridden on cmd)
Total bytes of delta: -2136 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         350 : 6857.dasm (0.41 % of base)
          36 : 16566.dasm (0.93 % of base)
          16 : 24378.dasm (8.51 % of base)
          16 : 34066.dasm (10.81 % of base)
           8 : 37320.dasm (1.20 % of base)
           6 : 1066.dasm (0.70 % of base)
           4 : 17631.dasm (0.64 % of base)
           4 : 2107.dasm (1.11 % of base)
           4 : 14882.dasm (0.02 % of base)
           4 : 19166.dasm (0.74 % of base)
           4 : 9411.dasm (0.65 % of base)
           2 : 18477.dasm (0.69 % of base)
           2 : 2749.dasm (0.20 % of base)
           2 : 28748.dasm (0.78 % of base)
           2 : 30781.dasm (0.08 % of base)
           2 : 3539.dasm (2.33 % of base)
           2 : 27523.dasm (0.11 % of base)
           2 : 2882.dasm (0.18 % of base)
           2 : 6257.dasm (1.19 % of base)
           2 : 35140.dasm (0.75 % of base)

Top file improvements (bytes):
         -92 : 28256.dasm (-21.10 % of base)
         -84 : 5502.dasm (-0.43 % of base)
         -68 : 17999.dasm (-11.85 % of base)
         -66 : 2055.dasm (-7.71 % of base)
         -60 : 29164.dasm (-3.97 % of base)
         -60 : 8519.dasm (-6.01 % of base)
         -52 : 30671.dasm (-4.30 % of base)
         -50 : 30054.dasm (-3.96 % of base)
         -50 : 30077.dasm (-10.68 % of base)
         -48 : 28773.dasm (-0.97 % of base)
         -46 : 28016.dasm (-6.44 % of base)
         -46 : 28230.dasm (-3.59 % of base)
         -46 : 30725.dasm (-20.00 % of base)
         -46 : 28515.dasm (-7.52 % of base)
         -46 : 29395.dasm (-12.78 % of base)
         -42 : 14165.dasm (-17.80 % of base)
         -38 : 34471.dasm (-0.48 % of base)
         -30 : 11462.dasm (-1.79 % of base)
         -30 : 28828.dasm (-8.62 % of base)
         -28 : 25153.dasm (-1.01 % of base)

68 total files with Code Size differences (45 improved, 23 regressed), 20 unchanged.

Top method regressions (bytes):
         350 (0.41 % of base) : 6857.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
          36 (0.93 % of base) : 16566.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:SetLevel(int):this (FullOpts)
          16 (8.51 % of base) : 24378.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
          16 (10.81 % of base) : 34066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
           8 (1.20 % of base) : 37320.dasm - Microsoft.ApplicationInsights.Metrics.DefaultAggregationPeriodCycle:GetNextCycleTargetTime(System.DateTimeOffset):System.DateTimeOffset (FullOpts)
           6 (0.70 % of base) : 1066.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
           4 (1.11 % of base) : 2107.dasm - BepuPhysics.CollisionDetection.ConstraintRemover:RemoveConstraintsFromTypeBatch(int):this (FullOpts)
           4 (0.02 % of base) : 14882.dasm - FSharp.Compiler.QuotationTranslator:ConvExprCore(FSharp.Compiler.QuotationTranslator+QuotationGenerationScope,FSharp.Compiler.QuotationTranslator+QuotationTranslationEnv,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.QuotationPickler+ExprData (FullOpts)
           4 (0.65 % of base) : 9411.dasm - FSharp.Compiler.TypedTreeOps:eliminateDeadTargetsFromMatch[System.__Canon](FSharp.Compiler.TypedTree+DecisionTree,System.__Canon[]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
           4 (0.64 % of base) : 17631.dasm - Microsoft.ML.Data.RowToRowTransformerBase+MapperBase:Microsoft.ML.Data.IRowMapper.CreateGetters(Microsoft.ML.DataViewRow,System.Func`2[int,ubyte],byref):System.Delegate[]:this (FullOpts)
           4 (0.74 % of base) : 19166.dasm - System.Net.Sockets.IPEndPointExtensions:GetIPAddress(System.ReadOnlySpan`1[ubyte]):System.Net.IPAddress (FullOpts)
           2 (1.19 % of base) : 6257.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadNestedExportedTypes@3183[int,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+ImplementationTag]]:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILNestedExportedType]:this (FullOpts)
           2 (0.19 % of base) : 3800.dasm - FSharp.Compiler.CompilerOptions:processArg@245(Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOptionBlock],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOption],Microsoft.FSharp.Collections.FSharpList`1[System.String]) (FullOpts)
           2 (0.75 % of base) : 35140.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (FullOpts)
           2 (0.78 % of base) : 28748.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (FullOpts)
           2 (0.11 % of base) : 27523.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAssignment(Microsoft.CodeAnalysis.CSharp.Syntax.AssignmentExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
           2 (0.08 % of base) : 30781.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
           2 (0.69 % of base) : 18477.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
           2 (0.20 % of base) : 2749.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (FullOpts)
           2 (0.49 % of base) : 95.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)

Top method improvements (bytes):
         -92 (-21.10 % of base) : 28256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -84 (-0.43 % of base) : 5502.dasm - FSharp.Compiler.Lexer:token(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
         -68 (-11.85 % of base) : 17999.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
         -66 (-7.71 % of base) : 2055.dasm - BepuPhysics.Solver`1[DemoBenchmarks.RagdollTubeBenchmark+DemoPoseIntegratorCallbacks]:Solve(float,BepuUtilities.IThreadDispatcher):this (FullOpts)
         -60 (-6.01 % of base) : 8519.dasm - FSharp.Compiler.Lexer:token$cont@859(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort],Microsoft.FSharp.Core.Unit):FSharp.Compiler.Parser+token (FullOpts)
         -60 (-3.97 % of base) : 29164.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
         -52 (-4.30 % of base) : 30671.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDelegateCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -50 (-10.68 % of base) : 30077.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -50 (-3.96 % of base) : 30054.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass449_0:<VisitSwitchExpressionCore>g__convertArms|0(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
         -48 (-0.97 % of base) : 28773.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConditionalAccess(Microsoft.CodeAnalysis.CSharp.BoundConditionalAccess,byref):this (FullOpts)
         -46 (-7.52 % of base) : 28515.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitConditionalOperatorCore>g__convertArms|206_0(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
         -46 (-20.00 % of base) : 30725.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
         -46 (-3.59 % of base) : 28230.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitLocalDeclaration(Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
         -46 (-6.44 % of base) : 28016.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitObjectCreationExpressionBase(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpressionBase):this (FullOpts)
         -46 (-12.78 % of base) : 29395.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0:<VisitObjectCreationExpressionBase>b__5(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
         -42 (-17.80 % of base) : 14165.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
         -38 (-0.48 % of base) : 34471.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -30 (-1.79 % of base) : 11462.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking+FixupExprNode@1147:Invoke(Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.TypedTree+Expr):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr]:this (FullOpts)
         -30 (-8.62 % of base) : 28828.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:ExactTypeArgumentInference(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):this (FullOpts)
         -28 (-1.01 % of base) : 25153.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)

Top method regressions (percentages):
          16 (10.81 % of base) : 34066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_SignatureKey():System.String:this (FullOpts)
          16 (8.51 % of base) : 24378.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:get_AssemblyCultureAttributeSetting():System.String:this (FullOpts)
           2 (2.33 % of base) : 3539.dasm - System.Text.Decoder:GetChars(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],ubyte):int:this (FullOpts)
           2 (2.33 % of base) : 199.dasm - System.Text.Encoder:GetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],ubyte):int:this (FullOpts)
           8 (1.20 % of base) : 37320.dasm - Microsoft.ApplicationInsights.Metrics.DefaultAggregationPeriodCycle:GetNextCycleTargetTime(System.DateTimeOffset):System.DateTimeOffset (FullOpts)
           2 (1.19 % of base) : 6257.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadNestedExportedTypes@3183[int,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+ImplementationTag]]:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILNestedExportedType]:this (FullOpts)
           4 (1.11 % of base) : 2107.dasm - BepuPhysics.CollisionDetection.ConstraintRemover:RemoveConstraintsFromTypeBatch(int):this (FullOpts)
          36 (0.93 % of base) : 16566.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:SetLevel(int):this (FullOpts)
           2 (0.78 % of base) : 28748.dasm - Microsoft.CodeAnalysis.BitVector:UnionWith(byref):ubyte:this (FullOpts)
           2 (0.75 % of base) : 35140.dasm - Interop+Sys:GetUserNameFromPasswd(uint):System.String (FullOpts)
           4 (0.74 % of base) : 19166.dasm - System.Net.Sockets.IPEndPointExtensions:GetIPAddress(System.ReadOnlySpan`1[ubyte]):System.Net.IPAddress (FullOpts)
           6 (0.70 % of base) : 1066.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
           2 (0.69 % of base) : 18477.dasm - Microsoft.ML.Data.TypedCursorable`1+TypedRowBase[System.__Canon]:.ctor(Microsoft.ML.Data.TypedCursorable`1[System.__Canon],Microsoft.ML.DataViewRow,System.String):this (FullOpts)
           4 (0.65 % of base) : 9411.dasm - FSharp.Compiler.TypedTreeOps:eliminateDeadTargetsFromMatch[System.__Canon](FSharp.Compiler.TypedTree+DecisionTree,System.__Canon[]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
           4 (0.64 % of base) : 17631.dasm - Microsoft.ML.Data.RowToRowTransformerBase+MapperBase:Microsoft.ML.Data.IRowMapper.CreateGetters(Microsoft.ML.DataViewRow,System.Func`2[int,ubyte],byref):System.Delegate[]:this (FullOpts)
           2 (0.49 % of base) : 95.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Populate(System.String,int,int):System.__Canon[]:this (FullOpts)
         350 (0.41 % of base) : 6857.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
           2 (0.20 % of base) : 2749.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (FullOpts)
           2 (0.19 % of base) : 3800.dasm - FSharp.Compiler.CompilerOptions:processArg@245(Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOptionBlock],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOption],Microsoft.FSharp.Collections.FSharpList`1[System.String]) (FullOpts)
           2 (0.18 % of base) : 2882.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (FullOpts)

Top method improvements (percentages):
         -92 (-21.10 % of base) : 28256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -46 (-20.00 % of base) : 30725.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
         -42 (-17.80 % of base) : 14165.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(int,byref,int) (FullOpts)
         -46 (-12.78 % of base) : 29395.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0:<VisitObjectCreationExpressionBase>b__5(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
          -8 (-12.12 % of base) : 18239.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
         -68 (-11.85 % of base) : 17999.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
         -12 (-10.71 % of base) : 18724.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
         -50 (-10.68 % of base) : 30077.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
         -12 (-10.17 % of base) : 4197.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -6 (-8.82 % of base) : 36586.dasm - System.Management.Automation.Interpreter.LoadCachedObjectInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -30 (-8.62 % of base) : 28828.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:ExactTypeArgumentInference(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):this (FullOpts)
         -10 (-8.33 % of base) : 16186.dasm - System.IO.Compression.DeflateStream:ReadByte():int:this (FullOpts)
         -66 (-7.71 % of base) : 2055.dasm - BepuPhysics.Solver`1[DemoBenchmarks.RagdollTubeBenchmark+DemoPoseIntegratorCallbacks]:Solve(float,BepuUtilities.IThreadDispatcher):this (FullOpts)
         -14 (-7.69 % of base) : 34113.dasm - System.Reflection.Internal.EnumerableExtensions+<>c__DisplayClass1_0`1[System.Reflection.Metadata.Ecma335.MetadataBuilder+ConstantRow]:<OrderBy>b__0(int,int):int:this (FullOpts)
         -20 (-7.63 % of base) : 8429.dasm - FSharp.Compiler.Xml.XmlDocCollector:LinesRange(FSharp.Compiler.Text.Position):FSharp.Compiler.Text.Range:this (FullOpts)
         -46 (-7.52 % of base) : 28515.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitConditionalOperatorCore>g__convertArms|206_0(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
         -12 (-7.50 % of base) : 20569.dasm - Microsoft.ML.Transforms.Text.NgramExtractingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[]):this (FullOpts)
         -12 (-6.98 % of base) : 18727.dasm - Microsoft.ML.Transforms.Text.WordEmbeddingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,int,Microsoft.ML.Transforms.Text.WordEmbeddingEstimator+ColumnOptions[]):this (FullOpts)
         -16 (-6.78 % of base) : 18717.dasm - Microsoft.ML.Transforms.ColumnSelectingTransformer+Mapper:.ctor(Microsoft.ML.Transforms.ColumnSelectingTransformer,Microsoft.ML.DataViewSchema):this (FullOpts)
         -12 (-6.45 % of base) : 17571.dasm - Microsoft.ML.Transforms.HashingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.HashingEstimator+ColumnOptions[]):this (FullOpts)



windows x86

Diffs are based on 2,296,119 contexts (841,817 MinOpts, 1,454,302 FullOpts).

MISSED contexts: base: 5,093 (0.22%), diff: 5,251 (0.23%)

Overall (-182,725 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,104,846 -1,078
benchmarks.run_pgo.windows.x86.checked.mch 45,219,159 -7,368
benchmarks.run_tiered.windows.x86.checked.mch 9,509,296 -932
coreclr_tests.run.windows.x86.checked.mch 309,170,651 -39,164
libraries.crossgen2.windows.x86.checked.mch 31,620,161 -3,178
libraries.pmi.windows.x86.checked.mch 48,795,839 -4,664
libraries_tests.run.windows.x86.Release.mch 185,793,630 -119,035
librariestestsnotieredcompilation.run.windows.x86.Release.mch 102,157,669 -6,712
realworld.run.windows.x86.checked.mch 11,359,539 -594

MinOpts (-105,402 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 6,629,490 -8,597
benchmarks.run_tiered.windows.x86.checked.mch 4,269,809 -101
coreclr_tests.run.windows.x86.checked.mch 201,671,769 -20,973
libraries_tests.run.windows.x86.Release.mch 98,331,507 -75,731

FullOpts (-77,323 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,104,567 -1,078
benchmarks.run_pgo.windows.x86.checked.mch 38,589,669 +1,229
benchmarks.run_tiered.windows.x86.checked.mch 5,239,487 -831
coreclr_tests.run.windows.x86.checked.mch 107,498,882 -18,191
libraries.crossgen2.windows.x86.checked.mch 31,619,104 -3,178
libraries.pmi.windows.x86.checked.mch 48,700,525 -4,664
libraries_tests.run.windows.x86.Release.mch 87,462,123 -43,304
librariestestsnotieredcompilation.run.windows.x86.Release.mch 93,487,877 -6,712
realworld.run.windows.x86.checked.mch 11,063,839 -594

Example diffs

benchmarks.run.windows.x86.checked.mch

-8 (-14.04%) : 4727.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)

@@ -9,7 +9,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  5   )     ref  ->  ebx         this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
-;  V01 tmp0         [V01,T01] (  2,  4   )   ubyte  ->  ecx         "Inlining Arg"
+;* V01 tmp0         [V01    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;
 ; Lcl frame size = 0
 
@@ -32,11 +32,8 @@ G_M21281_IG02:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        mov      ecx, 1
        xchg     dword ptr [ebx], ecx
        test     ecx, ecx
-       sete     cl
-       movzx    ecx, cl
-       test     ecx, ecx
-       jne      SHORT G_M21281_IG04
-                       ;; size=32 bbWeight=1 PerfScore 29.50
+       je       SHORT G_M21281_IG04
+                       ;; size=24 bbWeight=1 PerfScore 28.00
 G_M21281_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; byrRegs -[ebx]
        mov      ecx, 0xD1FFAB1E
@@ -52,6 +49,6 @@ G_M21281_IG04:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        ret      
                        ;; size=3 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 57, prolog size 4, PerfScore 35.75, instruction count 21, allocated bytes for code 57 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
+; Total bytes of code 49, prolog size 4, PerfScore 34.25, instruction count 18, allocated bytes for code 49 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
 ; ============================================================
 

-16 (-13.91%) : 23524.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)

@@ -8,16 +8,14 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] (  6,  6   )     ref  ->  esi         this class-hnd single-def <V8.Crypto.BigInteger>
-;  V01 arg1         [V01,T07] (  5,  5   )     ref  ->  [ebp-0x18]  class-hnd single-def <V8.Crypto.BigInteger>
-;  V02 loc0         [V02,T03] (  3,  9   )     ref  ->  ebx         class-hnd single-def <V8.Crypto.ListX`1[int]>
-;  V03 loc1         [V03,T04] (  2,  5   )     ref  ->  [ebp-0x1C]  class-hnd spill-single-def <V8.Crypto.ListX`1[int]>
-;  V04 loc2         [V04,T02] (  7, 22   )     int  ->  [ebp-0x10] 
-;  V05 tmp0         [V05,T01] (  3, 24   )     ref  ->  edi         "arr expr"
-;* V06 tmp1         [V06,T06] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V07 tmp2         [V07,T00] (  4, 32   )     int  ->  [ebp-0x14]  spill-single-def "argument with side effect"
+;  V00 this         [V00,T03] (  6,  6   )     ref  ->  esi         this class-hnd single-def <V8.Crypto.BigInteger>
+;  V01 arg1         [V01,T04] (  5,  5   )     ref  ->  edi         class-hnd single-def <V8.Crypto.BigInteger>
+;  V02 loc0         [V02,T02] (  3,  9   )     ref  ->  ebx         class-hnd single-def <V8.Crypto.ListX`1[int]>
+;  V03 loc1         [V03,T05] (  2,  5   )     ref  ->  [ebp-0x14]  class-hnd spill-single-def <V8.Crypto.ListX`1[int]>
+;  V04 loc2         [V04,T00] (  9, 30   )     int  ->  [ebp-0x10] 
+;  V05 tmp0         [V05,T01] (  3, 24   )     ref  ->  ecx         "arr expr"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 8
 
 G_M4195_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -25,7 +23,7 @@ G_M4195_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
        push     edi
        push     esi
        push     ebx
-       sub      esp, 16
+       sub      esp, 8
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
@@ -34,51 +32,41 @@ G_M4195_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
 G_M4195_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ebx, gword ptr [esi+0x04]
        ; gcrRegs +[ebx]
-       mov      gword ptr [ebp-0x18], edi
-       ; GC ptr vars +{V01}
        mov      eax, gword ptr [edi+0x04]
        ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x1C], eax
+       mov      gword ptr [ebp-0x14], eax
        ; GC ptr vars +{V03}
        mov      edx, dword ptr [esi+0x08]
        dec      edx
        js       SHORT G_M4195_IG04
-                       ;; size=18 bbWeight=1 PerfScore 9.25
-G_M4195_IG03:        ; bbWeight=4, gcVars=00000090 {V01 V03}, gcrefRegs=00000049 {eax ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[edi]
+                       ;; size=15 bbWeight=1 PerfScore 8.25
+G_M4195_IG03:        ; bbWeight=4, gcVars=00000020 {V03}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        cmp      edx, dword ptr [ebx+0x08]
        jae      SHORT G_M4195_IG07
-       mov      dword ptr [ebp-0x10], edx
-       mov      ecx, edx
-       mov      dword ptr [ebp-0x14], ecx
-       mov      edi, gword ptr [ebx+0x04]
-       ; gcrRegs +[edi]
-       cmp      ecx, dword ptr [edi+0x04]
-       jae      SHORT G_M4195_IG06
-       push     dword ptr [edi+4*ecx+0x08]
-       mov      ecx, eax
+       mov      ecx, gword ptr [ebx+0x04]
        ; gcrRegs +[ecx]
-       mov      edx, dword ptr [ebp-0x14]
+       cmp      edx, dword ptr [ecx+0x04]
+       jae      SHORT G_M4195_IG06
+       push     dword ptr [ecx+4*edx+0x08]
+       mov      ecx, eax
+       mov      dword ptr [ebp-0x10], edx
        cmp      dword ptr [ecx], ecx
        call     [V8.Crypto.ListX`1[int]:set_Item(int,int):this]
-       ; gcrRegs -[eax ecx edi]
-       mov      edi, dword ptr [ebp-0x10]
-       dec      edi
-       mov      edx, edi
-       mov      eax, gword ptr [ebp-0x1C]
+       ; gcrRegs -[eax ecx]
+       mov      edx, dword ptr [ebp-0x10]
+       dec      edx
+       mov      eax, gword ptr [ebp-0x14]
        ; gcrRegs +[eax]
        jns      SHORT G_M4195_IG03
-                       ;; size=49 bbWeight=4 PerfScore 100.00
-G_M4195_IG04:        ; bbWeight=1, gcVars=00000080 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+                       ;; size=39 bbWeight=4 PerfScore 90.00
+G_M4195_IG04:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[eax ebx]
        ; GC ptr vars -{V03}
        mov      eax, dword ptr [esi+0x08]
-       mov      edi, gword ptr [ebp-0x18]
-       ; gcrRegs +[edi]
        mov      dword ptr [edi+0x08], eax
        mov      eax, dword ptr [esi+0x0C]
        mov      dword ptr [edi+0x0C], eax
-                       ;; size=15 bbWeight=1 PerfScore 7.00
+                       ;; size=12 bbWeight=1 PerfScore 6.00
 G_M4195_IG05:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
@@ -89,7 +77,6 @@ G_M4195_IG05:        ; bbWeight=1, epilog, nogc, extend
                        ;; size=8 bbWeight=1 PerfScore 3.50
 G_M4195_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[esi edi]
-       ; GC ptr vars -{V01}
        call     CORINFO_HELP_RNGCHKFAIL
                        ;; size=5 bbWeight=0 PerfScore 0.00
 G_M4195_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -97,6 +84,6 @@ G_M4195_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 115, prolog size 9, PerfScore 124.75, instruction count 47, allocated bytes for code 115 (MethodHash=53c8ef9c) for method V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
+; Total bytes of code 99, prolog size 9, PerfScore 112.75, instruction count 41, allocated bytes for code 99 (MethodHash=53c8ef9c) for method V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
 ; ============================================================
 

-12 (-10.17%) : 24384.dasm - System.Linq.Grouping`2+d9[System.Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)

@@ -9,48 +9,40 @@
 ;
 ;  V00 this         [V00,T00] ( 13,  8.50)     ref  ->  ecx         this class-hnd single-def <System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]>
 ;  V01 loc0         [V01,T04] (  3,  2.50)     int  ->  eax        
-;  V02 loc1         [V02,T03] (  4,  2.50)     ref  ->  [ebp-0x08]  class-hnd spill-single-def <<unknown class>>
+;  V02 loc1         [V02,T03] (  4,  2.50)     ref  ->  edx         class-hnd single-def <<unknown class>>
 ;* V03 loc2         [V03    ] (  0,  0   )     int  ->  zero-ref   
-;  V04 tmp0         [V04,T01] (  3,  3   )     ref  ->  eax         single-def "arr expr"
-;  V05 tmp1         [V05,T02] (  3,  3   )     int  ->  esi         "index expr"
+;  V04 tmp0         [V04,T01] (  3,  3   )     ref  ->  edx         single-def "arr expr"
+;  V05 tmp1         [V05,T02] (  3,  3   )     int  ->  eax         "index expr"
 ;  V06 cse0         [V06,T05] (  3,  1.50)     int  ->  eax         "CSE - moderate"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M24504_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       push     esi
-       push     eax
-                       ;; size=5 bbWeight=1 PerfScore 3.25
+                       ;; size=3 bbWeight=1 PerfScore 1.25
 G_M24504_IG02:        ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[ecx]
        mov      eax, dword ptr [ecx+0x0C]
        mov      edx, gword ptr [ecx+0x08]
        ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x08], edx
-       ; GC ptr vars +{V02}
        test     eax, eax
        je       SHORT G_M24504_IG06
-                       ;; size=13 bbWeight=1 PerfScore 6.25
-G_M24504_IG03:        ; bbWeight=0.50, gcVars=00000008 {V02}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+                       ;; size=10 bbWeight=1 PerfScore 5.25
+G_M24504_IG03:        ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
        cmp      eax, 1
        je       SHORT G_M24504_IG09
                        ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M24504_IG04:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M24504_IG04:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ecx edx]
-       ; GC ptr vars -{V02}
        xor      eax, eax
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M24504_IG05:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      ecx
-       pop      esi
        pop      ebp
        ret      
-                       ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M24504_IG06:        ; bbWeight=0.50, gcVars=00000008 {V02}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+                       ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M24504_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ecx edx]
-       ; GC ptr vars +{V02}
        mov      dword ptr [ecx+0x0C], -1
        xor      eax, eax
        mov      dword ptr [ecx+0x10], eax
@@ -58,33 +50,28 @@ G_M24504_IG06:        ; bbWeight=0.50, gcVars=00000008 {V02}, gcrefRegs=00000006
        cmp      eax, dword ptr [edx+0x18]
        jge      SHORT G_M24504_IG04
                        ;; size=20 bbWeight=0.50 PerfScore 4.12
-G_M24504_IG07:        ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[edx]
-       lea      edx, bword ptr [ecx+0x04]
-       ; byrRegs +[edx]
-       mov      eax, gword ptr [ebp-0x08]
-       ; gcrRegs +[eax]
-       mov      eax, gword ptr [eax+0x08]
-       mov      esi, dword ptr [ecx+0x10]
-       cmp      esi, dword ptr [eax+0x04]
+G_M24504_IG07:        ; bbWeight=0.50, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, gword ptr [edx+0x08]
+       mov      eax, dword ptr [ecx+0x10]
+       cmp      eax, dword ptr [edx+0x04]
        jae      SHORT G_M24504_IG10
-       mov      eax, gword ptr [eax+4*esi+0x08]
-       ; GC ptr vars -{V02}
+       mov      eax, gword ptr [edx+4*eax+0x08]
+       ; gcrRegs +[eax]
+       lea      edx, bword ptr [ecx+0x04]
+       ; gcrRegs -[edx]
+       ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
        mov      dword ptr [ecx+0x0C], 1
        mov      eax, 1
-                       ;; size=38 bbWeight=0.50 PerfScore 6.88
+                       ;; size=35 bbWeight=0.50 PerfScore 6.38
 G_M24504_IG08:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      ecx
-       pop      esi
        pop      ebp
        ret      
-                       ;; size=4 bbWeight=0.50 PerfScore 1.25
-G_M24504_IG09:        ; bbWeight=0.50, gcVars=00000008 {V02}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+                       ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M24504_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[edx]
-       ; GC ptr vars +{V02}
        mov      dword ptr [ecx+0x0C], -1
        mov      eax, dword ptr [ecx+0x10]
        inc      eax
@@ -93,13 +80,12 @@ G_M24504_IG09:        ; bbWeight=0.50, gcVars=00000008 {V02}, gcrefRegs=00000006
        jl       SHORT G_M24504_IG07
        jmp      SHORT G_M24504_IG04
                        ;; size=21 bbWeight=0.50 PerfScore 5.12
-G_M24504_IG10:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M24504_IG10:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ecx edx]
-       ; GC ptr vars -{V02}
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 118, prolog size 5, PerfScore 28.88, instruction count 45, allocated bytes for code 118 (MethodHash=63dfa047) for method System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 106, prolog size 3, PerfScore 24.38, instruction count 37, allocated bytes for code 106 (MethodHash=63dfa047) for method System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
 ; ============================================================
 

+36 (+1.47%) : 5387.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)

@@ -9,50 +9,50 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] ( 48, 63   )     ref  ->  [ebp-0xAC]  this class-hnd single-def <System.Reflection.Emit.RuntimeTypeBuilder>
-;  V01 loc0         [V01,T36] (  3,  8.50)     ref  ->  [ebp-0xB0]  class-hnd exact spill-single-def <int[]>
-;  V02 loc1         [V02,T72] (  5,  2.50)     int  ->  edi        
+;  V01 loc0         [V01,T34] (  3,  8.50)     ref  ->  [ebp-0xB0]  class-hnd exact spill-single-def <int[]>
+;  V02 loc1         [V02,T70] (  5,  2.50)     int  ->  edi        
 ;  V03 loc2         [V03    ] (  9,  7.50)     ref  ->  [ebp-0x24]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.Emit.RuntimeModuleBuilder>
-;  V04 loc3         [V04,T59] (  3,  5   )     int  ->  [ebp-0x28]  spill-single-def
+;  V04 loc3         [V04,T57] (  3,  5   )     int  ->  [ebp-0x28]  spill-single-def
 ;  V05 loc4         [V05    ] (  4,  2   )     ref  ->  [ebp-0x2C]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.RuntimeType>
 ;  V06 loc5         [V06,T02] (  9, 32.50)     int  ->  [ebp-0x30] 
-;  V07 loc6         [V07,T29] (  8, 11   )     ref  ->  [ebp-0xB4]  class-hnd <int[]>
+;  V07 loc6         [V07,T27] (  8, 11   )     ref  ->  [ebp-0xB4]  class-hnd <int[]>
 ;* V08 loc7         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;  V09 loc8         [V09,T03] (  9, 32.50)     int  ->  [ebp-0x34] 
 ;* V10 loc9         [V10    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.Emit.RuntimeTypeBuilder+CustAttr]>
 ;* V11 loc10        [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.Reflection.Emit.RuntimeTypeBuilder+CustAttr>
-;  V12 loc11        [V12,T34] (  4,  9   )     ref  ->  edi         class-hnd exact single-def <<unknown class>>
+;  V12 loc11        [V12,T32] (  4,  9   )     ref  ->  edi         class-hnd exact single-def <<unknown class>>
 ;  V13 loc12        [V13,T15] (  5, 16.50)     int  ->  [ebp-0x38] 
 ;* V14 loc13        [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
 ;  V15 loc14        [V15,T05] (  7, 24.50)     int  ->  [ebp-0x3C] 
 ;  V16 loc15        [V16,T00] ( 30, 64   )     ref  ->  [ebp-0xB8]  class-hnd exact spill-single-def <System.Reflection.Emit.RuntimeMethodBuilder>
-;  V17 loc16        [V17,T27] (  4, 12   )     int  ->  [ebp-0x40]  spill-single-def
-;  V18 loc17        [V18,T51] (  3,  6   )     ref  ->  [ebp-0xBC]  class-hnd spill-single-def <ubyte[]>
+;  V17 loc16        [V17,T25] (  4, 12   )     int  ->  [ebp-0x40]  spill-single-def
+;  V18 loc17        [V18,T49] (  3,  6   )     ref  ->  [ebp-0xBC]  class-hnd spill-single-def <ubyte[]>
 ;  V19 loc18        [V19    ] (  2,  4   )     int  ->  [ebp-0x44]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V20 loc19        [V20,T14] ( 11, 22   )     ref  ->  [ebp-0xC0]  class-hnd <ubyte[]>
 ;* V21 loc20        [V21    ] (  0,  0   )     int  ->  zero-ref   
-;  V22 loc21        [V22,T31] (  5, 10   )     ref  ->  [ebp-0xC4]  class-hnd exact spill-single-def <System.Reflection.Emit.ExceptionHandler[]>
-;  V23 loc22        [V23,T32] (  5, 10   )     ref  ->  edi         class-hnd <int[]>
-;  V24 tmp0         [V24,T17] (  2, 16   )     ref  ->  ecx         class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-;  V25 tmp1         [V25,T23] (  2, 16   )     int  ->  eax         "Strict ordering of exceptions for Array store"
+;  V22 loc21        [V22,T29] (  5, 10   )     ref  ->  [ebp-0xC4]  class-hnd exact spill-single-def <System.Reflection.Emit.ExceptionHandler[]>
+;  V23 loc22        [V23,T30] (  5, 10   )     ref  ->  edi         class-hnd <int[]>
+;  V24 tmp0         [V24,T17] (  2, 16   )     ref  ->  [ebp-0xC8]  class-hnd exact spill-single-def "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V25 tmp1         [V25,T21] (  2, 16   )     int  ->  eax         "Strict ordering of exceptions for Array store"
 ;* V26 tmp2         [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
 ;* V27 tmp3         [V27    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Runtime.CompilerServices.QCallModule>
-;  V28 tmp4         [V28,T44] (  2,  8   )     int  ->  [ebp-0x48]  spill-single-def "impAppendStmt"
+;  V28 tmp4         [V28,T42] (  2,  8   )     int  ->  [ebp-0x48]  spill-single-def "impAppendStmt"
 ;* V29 tmp5         [V29    ] (  0,  0   )  struct ( 8) zero-ref    <System.Runtime.CompilerServices.QCallModule>
 ;* V30 tmp6         [V30    ] (  0,  0   )     int  ->  zero-ref   
-;  V31 tmp7         [V31,T62] (  2,  4   )     int  ->  [ebp-0x4C]  spill-single-def
+;  V31 tmp7         [V31,T60] (  2,  4   )     int  ->  [ebp-0x4C]  spill-single-def
 ;* V32 tmp8         [V32    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V33 tmp9         [V33    ] (  0,  0   )  struct ( 8) zero-ref    <System.Runtime.CompilerServices.QCallModule>
 ;* V34 tmp10        [V34    ] (  0,  0   )     int  ->  zero-ref   
 ;* V35 tmp11        [V35    ] (  0,  0   )     int  ->  zero-ref   
 ;* V36 tmp12        [V36    ] (  0,  0   )     ref  ->  zero-ref   
-;  V37 tmp13        [V37,T53] (  3,  6   )     int  ->  [ebp-0x50] 
+;  V37 tmp13        [V37,T51] (  3,  6   )     int  ->  [ebp-0x50] 
 ;* V38 tmp14        [V38    ] (  0,  0   )  struct ( 8) zero-ref    <System.Runtime.CompilerServices.QCallModule>
 ;* V39 tmp15        [V39    ] (  0,  0   )     int  ->  zero-ref   
 ;* V40 tmp16        [V40    ] (  0,  0   )     int  ->  zero-ref   
 ;* V41 tmp17        [V41    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V42 tmp18        [V42    ] (  0,  0   )     int  ->  zero-ref   
 ;* V43 tmp19        [V43    ] (  0,  0   )     ref  ->  zero-ref   
-;  V44 tmp20        [V44,T63] (  2,  4   )     int  ->  [ebp-0x54]  spill-single-def
+;  V44 tmp20        [V44,T61] (  2,  4   )     int  ->  [ebp-0x54]  spill-single-def
 ;* V45 tmp21        [V45    ] (  0,  0   )     int  ->  zero-ref   
 ;* V46 tmp22        [V46    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V47 tmp23        [V47    ] (  0,  0   )  struct ( 8) zero-ref    <System.Runtime.CompilerServices.QCallModule>
@@ -64,7 +64,7 @@
 ;* V53 tmp29        [V53    ] (  0,  0   )     int  ->  zero-ref   
 ;* V54 tmp30        [V54    ] (  0,  0   )     int  ->  zero-ref   
 ;* V55 tmp31        [V55    ] (  0,  0   )     ref  ->  zero-ref   
-;  V56 tmp32        [V56,T54] (  3,  6   )     int  ->  [ebp-0x58] 
+;  V56 tmp32        [V56,T52] (  3,  6   )     int  ->  [ebp-0x58] 
 ;* V57 tmp33        [V57    ] (  0,  0   )  struct ( 8) zero-ref    <System.Runtime.CompilerServices.QCallModule>
 ;* V58 tmp34        [V58    ] (  0,  0   )     int  ->  zero-ref   
 ;* V59 tmp35        [V59    ] (  0,  0   )     int  ->  zero-ref   
@@ -87,26 +87,26 @@
 ;* V76 tmp52        [V76    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V77 tmp53        [V77    ] (  0,  0   )     int  ->  zero-ref   
 ;* V78 tmp54        [V78    ] (  0,  0   )     ref  ->  zero-ref   
-;  V79 tmp55        [V79,T55] (  3,  6   )     int  ->  [ebp-0x5C] 
-;  V80 tmp56        [V80,T114] (  2,  0   )     ref  ->  esi         class-hnd exact "impAppendStmt" <System.String>
-;  V81 tmp57        [V81,T111] (  3,  0   )     ref  ->  edi         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V79 tmp55        [V79,T53] (  3,  6   )     int  ->  [ebp-0x5C] 
+;  V80 tmp56        [V80,T112] (  2,  0   )     ref  ->  esi         class-hnd exact "impAppendStmt" <System.String>
+;  V81 tmp57        [V81,T109] (  3,  0   )     ref  ->  edi         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V82 tmp58        [V82    ] (  0,  0   )     ref  ->  zero-ref    "CASTCLASS eval op1"
-;  V83 tmp59        [V83,T60] (  3,  5   )     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;  V84 tmp60        [V84,T25] (  5, 15   )     ref  ->  eax         class-hnd "spilling QMark2" <System.Reflection.Emit.RuntimeILGenerator>
-;  V85 tmp61        [V85,T115] (  2,  0   )     ref  ->  esi         class-hnd exact "impAppendStmt" <System.String>
-;  V86 tmp62        [V86,T112] (  3,  0   )     ref  ->  edi         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V87 tmp63        [V87,T113] (  3,  0   )     ref  ->  esi         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V83 tmp59        [V83,T58] (  3,  5   )     int  ->  ecx         "fgMakeTemp is creating a new local variable"
+;  V84 tmp60        [V84,T23] (  5, 15   )     ref  ->  eax         class-hnd "spilling QMark2" <System.Reflection.Emit.RuntimeILGenerator>
+;  V85 tmp61        [V85,T113] (  2,  0   )     ref  ->  esi         class-hnd exact "impAppendStmt" <System.String>
+;  V86 tmp62        [V86,T110] (  3,  0   )     ref  ->  edi         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V87 tmp63        [V87,T111] (  3,  0   )     ref  ->  esi         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V88 tmp64        [V88    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
 ;* V89 tmp65        [V89    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Runtime.CompilerServices.QCallModule>
-;  V90 tmp66        [V90,T83] (  2,  2   )     int  ->  ecx         "impAppendStmt"
+;  V90 tmp66        [V90,T81] (  2,  2   )     int  ->  ecx         "impAppendStmt"
 ;* V91 tmp67        [V91    ] (  0,  0   )  struct ( 4) zero-ref    "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
 ;* V92 tmp68        [V92    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
-;  V93 tmp69        [V93,T18] (  2, 16   )     ref  ->  ecx         class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-;  V94 tmp70        [V94,T24] (  2, 16   )     int  ->  eax         "Strict ordering of exceptions for Array store"
-;  V95 tmp71        [V95,T97] (  3,  1.50)     int  ->  [ebp-0x60] 
+;  V93 tmp69        [V93,T18] (  2, 16   )     ref  ->  [ebp-0xCC]  class-hnd exact spill-single-def "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V94 tmp70        [V94,T22] (  2, 16   )     int  ->  eax         "Strict ordering of exceptions for Array store"
+;  V95 tmp71        [V95,T95] (  3,  1.50)     int  ->  [ebp-0x60] 
 ;* V96 tmp72        [V96    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
 ;* V97 tmp73        [V97    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-;  V98 tmp74        [V98,T67] (  3,  3   )     ref  ->  eax         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V98 tmp74        [V98,T65] (  3,  3   )     ref  ->  eax         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V99 tmp75        [V99    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
 ;  V100 tmp76       [V100,T07] (  3, 24   )     ref  ->  edi         class-hnd "Inlining Arg" <<unknown class>>
 ;* V101 tmp77       [V101    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
@@ -116,45 +116,45 @@
 ;* V105 tmp81       [V105    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
 ;* V106 tmp82       [V106    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V107 tmp83       [V107    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
-;  V108 tmp84       [V108,T68] (  3,  3   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
-;  V109 tmp85       [V109,T76] (  2,  2   )     ref  ->  edi         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V108 tmp84       [V108,T66] (  3,  3   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
+;  V109 tmp85       [V109,T74] (  2,  2   )     ref  ->  edi         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
 ;* V110 tmp86       [V110    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
 ;* V111 tmp87       [V111    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;  V112 tmp88       [V112    ] (  2,  1   )   byref  ->  [ebp-0x64]  do-not-enreg[P] must-init pinned "Inline stloc first use temp"
 ;* V113 tmp89       [V113    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V114 tmp90       [V114,T69] (  3,  3   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V114 tmp90       [V114,T67] (  3,  3   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V115 tmp91       [V115    ] (  2,  1   )   byref  ->  [ebp-0x68]  do-not-enreg[P] must-init pinned "Inline stloc first use temp"
 ;* V116 tmp92       [V116    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V117 tmp93       [V117    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Runtime.CompilerServices.QCallModule>
-;  V118 tmp94       [V118,T84] (  2,  2   )     int  ->  [ebp-0x6C]  spill-single-def "Inlining Arg"
-;  V119 tmp95       [V119,T85] (  2,  2   )     int  ->  [ebp-0x70]  spill-single-def "Inlining Arg"
-;  V120 tmp96       [V120,T101] (  2,  1   )     int  ->  edi         "Inline stloc first use temp"
-;  V121 tmp97       [V121,T88] (  3,  1.50)   byref  ->  edi         "Inline return value spill temp"
-;  V122 tmp98       [V122,T74] (  4,  2   )   byref  ->  ecx         "Inline return value spill temp"
-;  V123 tmp99       [V123,T77] (  2,  2   )     ref  ->  edi         class-hnd single-def "Inlining Arg" <<unknown class>>
+;  V118 tmp94       [V118,T82] (  2,  2   )     int  ->  [ebp-0x6C]  spill-single-def "Inlining Arg"
+;  V119 tmp95       [V119,T83] (  2,  2   )     int  ->  [ebp-0x70]  spill-single-def "Inlining Arg"
+;  V120 tmp96       [V120,T99] (  2,  1   )     int  ->  edi         "Inline stloc first use temp"
+;  V121 tmp97       [V121,T86] (  3,  1.50)   byref  ->  edi         "Inline return value spill temp"
+;  V122 tmp98       [V122,T72] (  4,  2   )   byref  ->  ecx         "Inline return value spill temp"
+;  V123 tmp99       [V123,T75] (  2,  2   )     ref  ->  edi         class-hnd single-def "Inlining Arg" <<unknown class>>
 ;* V124 tmp100      [V124    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Reflection.Emit.RuntimeTypeBuilder+CustAttr]>
-;* V125 tmp101      [V125,T45] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V125 tmp101      [V125,T43] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V126 tmp102      [V126    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V127 tmp103      [V127,T78] (  2,  2   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V127 tmp103      [V127,T76] (  2,  2   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
 ;* V128 tmp104      [V128    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
-;  V129 tmp105      [V129,T04] (  4, 32   )     ref  ->  [ebp-0xC8]  class-hnd exact spill-single-def "Inlining Arg" <System.Reflection.Emit.RuntimeTypeBuilder>
+;  V129 tmp105      [V129,T04] (  4, 32   )     ref  ->  [ebp-0xD0]  class-hnd exact spill-single-def "Inlining Arg" <System.Reflection.Emit.RuntimeTypeBuilder>
 ;* V130 tmp106      [V130    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Reflection.TypeInfo>
-;  V131 tmp107      [V131,T58] (  2,  6   )     ref  ->  eax         class-hnd "Inline stloc first use temp" <System.Reflection.TypeInfo>
-;  V132 tmp108      [V132,T56] (  2,  4   )     int  ->  ecx        
+;  V131 tmp107      [V131,T56] (  2,  6   )     ref  ->  eax         class-hnd "Inline stloc first use temp" <System.Reflection.TypeInfo>
+;  V132 tmp108      [V132,T54] (  2,  4   )     int  ->  ecx        
 ;* V133 tmp109      [V133    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V134 tmp110      [V134    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V135 tmp111      [V135    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
 ;  V136 tmp112      [V136,T09] (  3, 24   )     ref  ->  ecx         class-hnd "Inlining Arg" <<unknown class>>
 ;* V137 tmp113      [V137    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Reflection.Emit.ILGenerator>
-;  V138 tmp114      [V138,T41] (  2,  8   )     ref  ->  edx         class-hnd "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
-;  V139 tmp115      [V139,T35] (  5,  8.50)     ref  ->  edx        
-;  V140 tmp116      [V140,T16] (  4, 16   )     ref  ->  [ebp-0xCC]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
+;  V138 tmp114      [V138,T39] (  2,  8   )     ref  ->  edx         class-hnd "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
+;  V139 tmp115      [V139,T33] (  5,  8.50)     ref  ->  edx        
+;  V140 tmp116      [V140,T16] (  4, 16   )     ref  ->  [ebp-0xD4]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
 ;* V141 tmp117      [V141    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.RuntimeILGenerator>
-;  V142 tmp118      [V142,T57] (  3,  6   )     int  ->  [ebp-0x74]  "Inline return value spill temp"
-;  V143 tmp119      [V143,T42] (  2,  8   )     ref  ->  esi         class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V142 tmp118      [V142,T55] (  3,  6   )     int  ->  [ebp-0x74]  "Inline return value spill temp"
+;  V143 tmp119      [V143,T40] (  2,  8   )     ref  ->  esi         class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
 ;* V144 tmp120      [V144    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
 ;* V145 tmp121      [V145    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V146 tmp122      [V146,T64] (  2,  4   )     int  ->  [ebp-0x78]  spill-single-def "Inline stloc first use temp"
+;  V146 tmp122      [V146,T62] (  2,  4   )     int  ->  [ebp-0x78]  spill-single-def "Inline stloc first use temp"
 ;  V147 tmp123      [V147    ] (  2,  4   )   byref  ->  [ebp-0x7C]  do-not-enreg[P] must-init pinned "Inline stloc first use temp"
 ;* V148 tmp124      [V148    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V149 tmp125      [V149    ] (  2,  4   )   byref  ->  [ebp-0x80]  do-not-enreg[P] must-init pinned "Inline stloc first use temp"
@@ -163,29 +163,29 @@
 ;* V152 tmp128      [V152    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V153 tmp129      [V153    ] (  2,  4   )   byref  ->  [ebp-0x88]  do-not-enreg[P] must-init pinned "Inline stloc first use temp"
 ;* V154 tmp130      [V154    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V155 tmp131      [V155,T37] (  4,  8   )   byref  ->  edi         "Inline return value spill temp"
-;  V156 tmp132      [V156,T38] (  4,  8   )   byref  ->  edx         "Inline return value spill temp"
-;  V157 tmp133      [V157,T39] (  4,  8   )   byref  ->  esi         "Inline return value spill temp"
-;  V158 tmp134      [V158,T40] (  4,  8   )   byref  ->  ecx         "Inline return value spill temp"
+;  V155 tmp131      [V155,T35] (  4,  8   )   byref  ->  edi         "Inline return value spill temp"
+;  V156 tmp132      [V156,T36] (  4,  8   )   byref  ->  edx         "Inline return value spill temp"
+;  V157 tmp133      [V157,T37] (  4,  8   )   byref  ->  esi         "Inline return value spill temp"
+;  V158 tmp134      [V158,T38] (  4,  8   )   byref  ->  ecx         "Inline return value spill temp"
 ;* V159 tmp135      [V159    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
-;  V160 tmp136      [V160,T79] (  2,  2   )     ref  ->  edx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V160 tmp136      [V160,T77] (  2,  2   )     ref  ->  edx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
 ;* V161 tmp137      [V161    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
 ;* V162 tmp138      [V162    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
 ;* V163 tmp139      [V163    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V164 tmp140      [V164,T70] (  3,  3   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
-;  V165 tmp141      [V165,T89] (  3,  1.50)     ref  ->  edi         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-;  V166 tmp142      [V166,T71] (  5,  2.50)     ref  ->  edi         class-hnd single-def "Inline stloc first use temp" <System.Object>
-;  V167 tmp143      [V167,T80] (  2,  2   )     ref  ->  ecx         class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+;  V164 tmp140      [V164,T68] (  3,  3   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
+;  V165 tmp141      [V165,T87] (  3,  1.50)     ref  ->  edi         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+;  V166 tmp142      [V166,T69] (  5,  2.50)     ref  ->  edi         class-hnd single-def "Inline stloc first use temp" <System.Object>
+;  V167 tmp143      [V167,T78] (  2,  2   )     ref  ->  ecx         class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
 ;* V168 tmp144      [V168    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
-;  V169 tmp145      [V169,T50] (  5, 13   )     ref  ->  eax         "Single return block return value"
-;  V170 FramesRoot  [V170,T30] ( 11, 10   )     int  ->  [ebp-0x8C]  spill-single-def "Pinvoke FrameListRoot"
-;  V171 PInvokeFrame[V171    ] ( 20, 18   )  struct (32) [ebp-0xEC]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-;  V172 tmp148      [V172,T26] (  4, 12.50)     ref  ->  edi         single-def "field V10._list (fldOffset=0x0)" P-INDEP
-;  V173 tmp149      [V173,T33] (  2,  6   )     ref  ->  ecx         "field V10._current (fldOffset=0x4)" P-INDEP
+;  V169 tmp145      [V169,T48] (  5, 13   )     ref  ->  eax         "Single return block return value"
+;  V170 FramesRoot  [V170,T28] ( 11, 10   )     int  ->  [ebp-0x8C]  spill-single-def "Pinvoke FrameListRoot"
+;  V171 PInvokeFrame[V171    ] ( 20, 18   )  struct (32) [ebp-0xF4]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V172 tmp148      [V172,T24] (  4, 12.50)     ref  ->  edi         single-def "field V10._list (fldOffset=0x0)" P-INDEP
+;  V173 tmp149      [V173,T31] (  2,  6   )     ref  ->  ecx         "field V10._current (fldOffset=0x4)" P-INDEP
 ;  V174 tmp150      [V174,T06] (  6, 20.50)     int  ->  [ebp-0x90]  "field V10._index (fldOffset=0x8)" P-INDEP
-;  V175 tmp151      [V175,T61] (  2,  4.50)     int  ->  [ebp-0x94]  spill-single-def "field V10._version (fldOffset=0xc)" P-INDEP
-;  V176 tmp152      [V176,T65] (  2,  4   )     int  ->  [ebp-0x98]  spill-single-def "field V26._ptr (fldOffset=0x0)" P-INDEP
-;  V177 tmp153      [V177,T66] (  2,  4   )     int  ->  [ebp-0x9C]  spill-single-def "field V26._module (fldOffset=0x4)" P-INDEP
+;  V175 tmp151      [V175,T59] (  2,  4.50)     int  ->  [ebp-0x94]  spill-single-def "field V10._version (fldOffset=0xc)" P-INDEP
+;  V176 tmp152      [V176,T63] (  2,  4   )     int  ->  [ebp-0x98]  spill-single-def "field V26._ptr (fldOffset=0x0)" P-INDEP
+;  V177 tmp153      [V177,T64] (  2,  4   )     int  ->  [ebp-0x9C]  spill-single-def "field V26._module (fldOffset=0x4)" P-INDEP
 ;* V178 tmp154      [V178    ] (  0,  0   )     int  ->  zero-ref    "field V27._ptr (fldOffset=0x0)" P-INDEP
 ;* V179 tmp155      [V179    ] (  0,  0   )     int  ->  zero-ref    "field V27._module (fldOffset=0x4)" P-INDEP
 ;* V180 tmp156      [V180    ] (  0,  0   )     int  ->  zero-ref    "field V29._ptr (fldOffset=0x0)" P-INDEP
@@ -200,58 +200,56 @@
 ;* V189 tmp165      [V189    ] (  0,  0   )     int  ->  zero-ref    "field V57._module (fldOffset=0x4)" P-INDEP
 ;* V190 tmp166      [V190    ] (  0,  0   )     int  ->  zero-ref    "field V68._ptr (fldOffset=0x0)" P-INDEP
 ;* V191 tmp167      [V191    ] (  0,  0   )     int  ->  zero-ref    "field V68._module (fldOffset=0x4)" P-INDEP
-;  V192 tmp168      [V192,T102] (  2,  1   )     int  ->  eax         "field V88._ptr (fldOffset=0x0)" P-INDEP
-;  V193 tmp169      [V193,T103] (  2,  1   )     int  ->  edx         "field V88._module (fldOffset=0x4)" P-INDEP
+;  V192 tmp168      [V192,T100] (  2,  1   )     int  ->  eax         "field V88._ptr (fldOffset=0x0)" P-INDEP
+;  V193 tmp169      [V193,T101] (  2,  1   )     int  ->  edx         "field V88._module (fldOffset=0x4)" P-INDEP
 ;* V194 tmp170      [V194    ] (  0,  0   )     int  ->  zero-ref    "field V89._ptr (fldOffset=0x0)" P-INDEP
 ;* V195 tmp171      [V195    ] (  0,  0   )     int  ->  zero-ref    "field V89._module (fldOffset=0x4)" P-INDEP
 ;* V196 tmp172      [V196    ] (  0,  0   )     int  ->  zero-ref    "field V91._ptr (fldOffset=0x0)" P-INDEP
-;  V197 tmp173      [V197,T104] (  2,  1   )     int  ->  edx         "field V92._ptr (fldOffset=0x0)" P-INDEP
-;  V198 tmp174      [V198,T105] (  2,  1   )     int  ->  ecx         "field V92._module (fldOffset=0x4)" P-INDEP
-;  V199 tmp175      [V199,T106] (  2,  1   )     int  ->  [ebp-0xA0]  spill-single-def "field V96._ptr (fldOffset=0x0)" P-INDEP
-;  V200 tmp176      [V200,T107] (  2,  1   )     int  ->  [ebp-0xA4]  spill-single-def "field V96._module (fldOffset=0x4)" P-INDEP
+;  V197 tmp173      [V197,T102] (  2,  1   )     int  ->  edx         "field V92._ptr (fldOffset=0x0)" P-INDEP
+;  V198 tmp174      [V198,T103] (  2,  1   )     int  ->  ecx         "field V92._module (fldOffset=0x4)" P-INDEP
+;  V199 tmp175      [V199,T104] (  2,  1   )     int  ->  [ebp-0xA0]  spill-single-def "field V96._ptr (fldOffset=0x0)" P-INDEP
+;  V200 tmp176      [V200,T105] (  2,  1   )     int  ->  [ebp-0xA4]  spill-single-def "field V96._module (fldOffset=0x4)" P-INDEP
 ;* V201 tmp177      [V201    ] (  0,  0   )     int  ->  zero-ref    "field V117._ptr (fldOffset=0x0)" P-INDEP
 ;* V202 tmp178      [V202    ] (  0,  0   )     int  ->  zero-ref    "field V117._module (fldOffset=0x4)" P-INDEP
-;  V203 tmp179      [V203,T90] (  3,  1.50)     ref  ->  edi         single-def "field V124._list (fldOffset=0x0)" P-INDEP
...

+8 (+2.05%) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)

@@ -8,33 +8,33 @@
 ; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T08] (  7,  4.50)     ref  ->  esi         class-hnd single-def <System.String>
-;  V01 loc0         [V01,T10] (  6,  2.38)     ref  ->  edi         class-hnd exact <System.String>
-;  V02 loc1         [V02,T07] (  8, 14.50)     ref  ->  ebx         class-hnd exact single-def <<unknown class>>
-;  V03 loc2         [V03,T02] (  6, 17   )     ref  ->  esi         class-hnd exact single-def <<unknown class>>
-;  V04 loc3         [V04,T00] (  9, 32.50)     int  ->  edi        
+;  V00 arg0         [V00,T07] (  7,  4.50)     ref  ->  esi         class-hnd single-def <System.String>
+;  V01 loc0         [V01,T09] (  6,  2.38)     ref  ->  edi         class-hnd exact <System.String>
+;  V02 loc1         [V02,T06] (  7, 14   )     ref  ->  ebx         class-hnd exact single-def <<unknown class>>
+;  V03 loc2         [V03,T02] (  6, 17   )     ref  ->  edi         class-hnd exact single-def <<unknown class>>
+;  V04 loc3         [V04,T00] (  9, 32.50)     int  ->  [ebp-0x10] 
 ;  V05 loc4         [V05,T03] (  5, 16.50)     int  ->  ebx        
-;  V06 tmp0         [V06,T11] (  2,  2   )     ref  ->  edi         single-def "CASTCLASS eval op1"
+;  V06 tmp0         [V06,T10] (  2,  2   )     ref  ->  edi         single-def "CASTCLASS eval op1"
 ;* V07 tmp1         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.String>
-;  V08 tmp2         [V08,T09] (  3,  3   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V08 tmp2         [V08,T08] (  3,  3   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V09 tmp3         [V09,T04] (  2, 16   )   byref  ->  ecx         "impAppendStmt"
 ;* V10 tmp4         [V10,T16] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V11 tmp5         [V11,T17] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V12 tmp6         [V12    ] (  2,  2   )  ushort  ->  [ebp-0x10]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;  V12 tmp6         [V12    ] (  2,  2   )  ushort  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
 ;* V13 tmp7         [V13    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;  V14 tmp8         [V14    ] (  2,  2   )  ushort  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;  V14 tmp8         [V14    ] (  2,  2   )  ushort  ->  [ebp-0x18]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
 ;* V15 tmp9         [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V16 tmp10        [V16,T14] (  2,  1   )   byref  ->  ecx         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V17 tmp11        [V17,T18] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x4)" P-INDEP
 ;  V18 tmp12        [V18,T15] (  2,  1   )   byref  ->  ecx         single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V19 tmp13        [V19,T19] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
-;  V20 tmp14        [V20,T12] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V21 tmp15        [V21,T13] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V20 tmp14        [V20,T11] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V21 tmp15        [V21,T12] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
 ;  V22 tmp16        [V22,T01] (  3, 24   )     ref  ->  edx         "arr expr"
-;  V23 tmp17        [V23,T05] (  2, 16   )   byref  ->  ecx         "argument with side effect"
-;  V24 tmp18        [V24,T06] (  2, 16   )     ref  ->  edx         "argument with side effect"
+;  V23 tmp17        [V23,T05] (  2, 16   )     ref  ->  edx         "argument with side effect"
+;  V24 cse0         [V24,T13] (  3,  1.50)     int  ->  esi         "CSE - moderate"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M12781_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -42,7 +42,7 @@ G_M12781_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 8
+       sub      esp, 12
        mov      esi, ecx
        ; gcrRegs +[esi]
                        ;; size=11 bbWeight=1 PerfScore 4.75
@@ -113,8 +113,8 @@ G_M12781_IG08:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
                        ;; size=64 bbWeight=0.50 PerfScore 7.88
 G_M12781_IG09:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        movzx    ecx, word  ptr [D1FFAB1EH]      ; static handle
-       mov      word  ptr [ebp-0x10], cx
-       lea      ecx, bword ptr [ebp-0x10]
+       mov      word  ptr [ebp-0x14], cx
+       lea      ecx, bword ptr [ebp-0x14]
        ; byrRegs +[ecx]
        push     1
        push     ecx
@@ -140,8 +140,8 @@ G_M12781_IG10:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
                        ;; size=17 bbWeight=0.50 PerfScore 2.62
 G_M12781_IG11:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
        movzx    ecx, word  ptr [D1FFAB1EH]      ; static handle
-       mov      word  ptr [ebp-0x14], cx
-       lea      ecx, bword ptr [ebp-0x14]
+       mov      word  ptr [ebp-0x18], cx
+       lea      ecx, bword ptr [ebp-0x18]
        ; byrRegs +[ecx]
        push     1
        push     ecx
@@ -160,57 +160,61 @@ G_M12781_IG11:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
        ; gcrRegs -[eax ecx edx]
                        ;; size=42 bbWeight=0.50 PerfScore 6.75
 G_M12781_IG12:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
-       mov      edx, dword ptr [ebx+0x08]
+       mov      esi, dword ptr [ebx+0x08]
+       mov      edx, esi
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWARR_1_VC
        ; gcrRegs +[eax]
-       mov      esi, eax
-       ; gcrRegs +[esi]
-       xor      edi, edi
-       cmp      dword ptr [ebx+0x08], 0
-       jle      SHORT G_M12781_IG14
-                       ;; size=23 bbWeight=0.50 PerfScore 3.88
-G_M12781_IG13:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edi, eax
+       ; gcrRegs +[edi]
+       xor      eax, eax
        ; gcrRegs -[eax]
-       cmp      edi, dword ptr [esi+0x04]
+       test     esi, esi
+       jle      SHORT G_M12781_IG14
+                       ;; size=23 bbWeight=0.50 PerfScore 2.62
+G_M12781_IG13:        ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+       cmp      eax, dword ptr [edi+0x04]
        jae      SHORT G_M12781_IG17
-       lea      ecx, bword ptr [esi+8*edi+0x08]
+       lea      ecx, bword ptr [edi+8*eax+0x08]
        ; byrRegs +[ecx]
-       cmp      edi, dword ptr [ebx+0x08]
+       cmp      eax, dword ptr [ebx+0x08]
        jae      SHORT G_M12781_IG20
        mov      edx, gword ptr [ebx+0x04]
        ; gcrRegs +[edx]
-       cmp      edi, dword ptr [edx+0x04]
+       cmp      eax, dword ptr [edx+0x04]
        jae      SHORT G_M12781_IG17
-       mov      edx, gword ptr [edx+4*edi+0x08]
+       mov      dword ptr [ebp-0x10], eax
+       mov      edx, gword ptr [edx+4*eax+0x08]
        call     [<unknown method>]
        ; gcrRegs -[edx]
        ; byrRegs -[ecx]
-       inc      edi
-       cmp      edi, dword ptr [ebx+0x08]
+       mov      esi, dword ptr [ebp-0x10]
+       inc      esi
+       cmp      esi, dword ptr [ebx+0x08]
+       mov      eax, esi
        jl       SHORT G_M12781_IG13
-                       ;; size=38 bbWeight=4 PerfScore 97.00
-G_M12781_IG14:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+                       ;; size=46 bbWeight=4 PerfScore 106.00
+G_M12781_IG14:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ebx]
        xor      ebx, ebx
-       cmp      dword ptr [esi+0x04], 0
+       cmp      dword ptr [edi+0x04], 0
        jle      G_M12781_IG03
                        ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M12781_IG15:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M12781_IG15:        ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
        lea      eax, [8*ebx]
        add      eax, 8
-       add      eax, esi
+       add      eax, edi
        ; byrRegs +[eax]
        push     gword ptr [eax+0x04]
        push     gword ptr [eax]
        call     [<unknown method>]
        ; byrRegs -[eax]
        inc      ebx
-       cmp      dword ptr [esi+0x04], ebx
+       cmp      dword ptr [edi+0x04], ebx
        jg       SHORT G_M12781_IG15
                        ;; size=29 bbWeight=4 PerfScore 49.00
 G_M12781_IG16:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi]
+       ; gcrRegs -[edi]
        jmp      G_M12781_IG03
                        ;; size=5 bbWeight=0.50 PerfScore 1.00
 G_M12781_IG17:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -236,6 +240,6 @@ G_M12781_IG20:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 390, prolog size 9, PerfScore 195.53, instruction count 115, allocated bytes for code 390 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
+; Total bytes of code 398, prolog size 9, PerfScore 203.28, instruction count 119, allocated bytes for code 398 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
 ; ============================================================
 

+15 (+8.11%) : 22900.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)

@@ -7,29 +7,31 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  9,  5.50)   byref  ->  edi         this single-def
+;  V00 this         [V00,T01] (  8,  5   )   byref  ->  edi         this single-def
 ;  V01 arg1         [V01,T00] ( 11,  7   )     int  ->  esi         single-def
 ;  V02 arg2         [V02,T02] (  9,  5   )     int  ->  ebx         single-def
-;  V03 loc0         [V03,T18] (  2,  1   )     ref  ->  [ebp-0x10]  class-hnd spill-single-def <<unknown class>>
-;  V04 loc1         [V04,T19] (  2,  1   )     ref  ->  [ebp-0x14]  class-hnd spill-single-def <<unknown class>>
-;  V05 tmp0         [V05,T03] (  3,  3   )     ref  ->  edx         single-def "arr expr"
-;  V06 tmp1         [V06,T04] (  3,  3   )     ref  ->  eax         single-def "arr expr"
-;  V07 tmp2         [V07,T11] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
-;  V08 tmp3         [V08,T12] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V09 tmp4         [V09,T05] (  3,  3   )     ref  ->  edx         single-def "arr expr"
-;  V10 tmp5         [V10,T06] (  3,  3   )     ref  ->  ecx         single-def "arr expr"
-;  V11 tmp6         [V11,T13] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;* V12 tmp7         [V12,T20] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;  V13 tmp8         [V13,T14] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
-;  V14 tmp9         [V14,T07] (  3,  3   )     ref  ->  edx         single-def "arr expr"
-;  V15 tmp10        [V15,T08] (  3,  3   )     ref  ->  ecx         single-def "arr expr"
-;  V16 tmp11        [V16,T15] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V17 tmp12        [V17,T17] (  2,  2   )     int  ->  esi         "argument with side effect"
-;  V18 tmp13        [V18,T16] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
-;  V19 cse0         [V19,T09] (  5,  2.50)     ref  ->  ecx         "CSE - moderate"
-;  V20 cse1         [V20,T10] (  4,  2   )     ref  ->  ecx         "CSE - conservative"
+;  V03 loc0         [V03,T21] (  2,  1   )     ref  ->  [ebp-0x14]  class-hnd spill-single-def <<unknown class>>
+;  V04 loc1         [V04,T22] (  2,  1   )     ref  ->  [ebp-0x18]  class-hnd spill-single-def <<unknown class>>
+;  V05 tmp0         [V05,T03] (  3,  3   )     ref  ->  eax         single-def "arr expr"
+;  V06 tmp1         [V06,T08] (  2,  2   )     ref  ->  edx         single-def "arr expr"
+;  V07 tmp2         [V07,T09] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
+;  V08 tmp3         [V08,T10] (  2,  2   )     ref  ->  eax         single-def "argument with side effect"
+;  V09 tmp4         [V09,T04] (  3,  3   )     ref  ->  edx         single-def "arr expr"
+;  V10 tmp5         [V10,T11] (  2,  2   )     ref  ->  ecx         single-def "arr expr"
+;  V11 tmp6         [V11,T12] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V12 tmp7         [V12,T13] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
+;  V13 tmp8         [V13,T05] (  3,  3   )     ref  ->  edx         single-def "arr expr"
+;  V14 tmp9         [V14,T14] (  2,  2   )     ref  ->  ecx         single-def "arr expr"
+;  V15 tmp10        [V15,T15] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V16 tmp11        [V16,T16] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
+;  V17 cse0         [V17,T06] (  5,  2.50)     ref  ->  ecx         "CSE - moderate"
+;  V18 cse1         [V18,T07] (  4,  2   )     ref  ->  ecx         "CSE - moderate"
+;  V19 cse2         [V19,T17] (  3,  1.50)     ref  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
+;  V20 cse3         [V20,T18] (  3,  1.50)     int  ->  [ebp-0x10]  spill-single-def "CSE - moderate"
+;  V21 cse4         [V21,T19] (  3,  1.50)     int  ->  eax         "CSE - moderate"
+;  V22 cse5         [V22,T20] (  3,  1.50)     int  ->  eax         "CSE - moderate"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M28033_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -37,7 +39,7 @@ G_M28033_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 8
+       sub      esp, 16
        mov      edi, ecx
        ; byrRegs +[edi]
        mov      esi, edx
@@ -45,47 +47,56 @@ G_M28033_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=16 bbWeight=1 PerfScore 6.00
 G_M28033_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
        cmp      esi, ebx
-       je       G_M28033_IG04
+       je       G_M28033_IG05
                        ;; size=8 bbWeight=1 PerfScore 1.25
 G_M28033_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
        mov      ecx, gword ptr [edi+0x08]
        ; gcrRegs +[ecx]
        mov      edx, gword ptr [edi]
        ; gcrRegs +[edx]
-       cmp      esi, dword ptr [edx+0x04]
-       jae      G_M28033_IG05
-       mov      edx, gword ptr [edx+4*esi+0x08]
-       mov      eax, gword ptr [edi]
+       mov      gword ptr [ebp-0x1C], edx
+       ; GC ptr vars +{V19}
+       mov      eax, edx
        ; gcrRegs +[eax]
-       cmp      ebx, dword ptr [eax+0x04]
-       jae      G_M28033_IG05
-       push     gword ptr [eax+4*ebx+0x08]
+       mov      edx, dword ptr [eax+0x04]
+       ; gcrRegs -[edx]
+       mov      dword ptr [ebp-0x10], edx
+       cmp      esi, edx
+       jae      G_M28033_IG06
+       mov      eax, gword ptr [eax+4*esi+0x08]
+       mov      edx, gword ptr [ebp-0x1C]
+       ; gcrRegs +[edx]
+       cmp      ebx, dword ptr [ebp-0x10]
+       jae      G_M28033_IG06
+       push     gword ptr [edx+4*ebx+0x08]
+       mov      edx, eax
+       ; GC ptr vars -{V19}
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
        test     eax, eax
-       jle      SHORT G_M28033_IG04
+       jle      SHORT G_M28033_IG05
        mov      ecx, gword ptr [edi]
        ; gcrRegs +[ecx]
        mov      edx, ecx
        ; gcrRegs +[edx]
-       cmp      esi, dword ptr [edx+0x04]
-       jae      SHORT G_M28033_IG05
-       mov      eax, gword ptr [edx+4*esi+0x08]
-       ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x10], eax
+       mov      eax, dword ptr [edx+0x04]
+       cmp      esi, eax
+       jae      SHORT G_M28033_IG06
+       mov      edx, gword ptr [edx+4*esi+0x08]
+       mov      gword ptr [ebp-0x14], edx
        ; GC ptr vars +{V03}
        mov      edx, ecx
-       cmp      ebx, dword ptr [ecx+0x04]
-       jae      SHORT G_M28033_IG05
+       cmp      ebx, eax
+       jae      SHORT G_M28033_IG06
        push     gword ptr [ecx+4*ebx+0x08]
        mov      ecx, edx
        mov      edx, esi
        ; gcrRegs -[edx]
        call     CORINFO_HELP_ARRADDR_ST
-       ; gcrRegs -[eax ecx]
+       ; gcrRegs -[ecx]
        mov      ecx, gword ptr [edi]
        ; gcrRegs +[ecx]
-       push     gword ptr [ebp-0x10]
+       push     gword ptr [ebp-0x14]
        mov      edx, ebx
        ; GC ptr vars -{V03}
        call     CORINFO_HELP_ARRADDR_ST
@@ -93,34 +104,36 @@ G_M28033_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080
        mov      ecx, gword ptr [edi+0x04]
        ; gcrRegs +[ecx]
        test     ecx, ecx
-       je       SHORT G_M28033_IG04
+       je       SHORT G_M28033_IG05
        mov      edx, ecx
        ; gcrRegs +[edx]
-       cmp      esi, dword ptr [edx+0x04]
-       jae      SHORT G_M28033_IG05
-       mov      eax, gword ptr [edx+4*esi+0x08]
-       ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x14], eax
+       mov      eax, dword ptr [edx+0x04]
+       cmp      esi, eax
+       jae      SHORT G_M28033_IG06
+       mov      edx, gword ptr [edx+4*esi+0x08]
+       mov      gword ptr [ebp-0x18], edx
        ; GC ptr vars +{V04}
        mov      edx, ecx
-       cmp      ebx, dword ptr [ecx+0x04]
-       jae      SHORT G_M28033_IG05
+       cmp      ebx, eax
+       jae      SHORT G_M28033_IG06
        push     gword ptr [ecx+4*ebx+0x08]
        mov      ecx, edx
        mov      edx, esi
        ; gcrRegs -[edx]
        call     CORINFO_HELP_ARRADDR_ST
-       ; gcrRegs -[eax ecx]
+       ; gcrRegs -[ecx]
+                       ;; size=147 bbWeight=0.50 PerfScore 27.25
+G_M28033_IG04:        ; bbWeight=0.50, extend
        mov      ecx, gword ptr [edi+0x04]
        ; gcrRegs +[ecx]
-       push     gword ptr [ebp-0x14]
+       push     gword ptr [ebp-0x18]
        mov      edx, ebx
        ; GC ptr vars -{V04}
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[ecx]
        ; byrRegs -[edi]
-                       ;; size=145 bbWeight=0.50 PerfScore 33.00
-G_M28033_IG04:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+                       ;; size=13 bbWeight=0.50 PerfScore 2.12
+G_M28033_IG05:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -128,11 +141,11 @@ G_M28033_IG04:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=1 PerfScore 4.50
-G_M28033_IG05:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M28033_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 185, prolog size 9, PerfScore 44.75, instruction count 67, allocated bytes for code 185 (MethodHash=4064927e) for method System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
+; Total bytes of code 200, prolog size 9, PerfScore 41.12, instruction count 74, allocated bytes for code 200 (MethodHash=4064927e) for method System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
 ; ============================================================
 

benchmarks.run_pgo.windows.x86.checked.mch

-18 (-16.67%) : 77849.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)

@@ -13,30 +13,22 @@
 ;  V05 arg5         [V05    ] (  1,  1   )     ref  ->  [ebp+0x08]  do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.InstrumentationState>
 ;  V06 tmp0         [V06    ] (  1,  1   )     ref  ->  [ebp-0x0C]  do-not-enreg[] must-init "handle histogram profile tmp"
 ;  V07 tmp1         [V07    ] (  1,  1   )     ref  ->  [ebp-0x10]  do-not-enreg[] must-init "argument with side effect"
-;  V08 tmp2         [V08    ] (  1,  1   )     ref  ->  [ebp-0x14]  do-not-enreg[] must-init "argument with side effect"
-;  V09 tmp3         [V09    ] (  1,  1   )     ref  ->  [ebp-0x18]  do-not-enreg[] must-init "argument with side effect"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 16
 
 G_M29273_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 24
+       sub      esp, 16
        xor      eax, eax
        mov      dword ptr [ebp-0x0C], eax
        mov      dword ptr [ebp-0x10], eax
-       mov      dword ptr [ebp-0x14], eax
-       mov      dword ptr [ebp-0x18], eax
        mov      gword ptr [ebp-0x04], ecx
        mov      gword ptr [ebp-0x08], edx
-                       ;; size=26 bbWeight=1 PerfScore 7.75
+                       ;; size=20 bbWeight=1 PerfScore 5.75
 G_M29273_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       mov      ecx, gword ptr [ebp-0x04]
+       mov      ecx, gword ptr [ebp-0x08]
        ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x18], ecx
-       mov      ecx, gword ptr [ebp-0x08]
-       mov      gword ptr [ebp-0x14], ecx
-       mov      ecx, gword ptr [ebp-0x08]
        mov      gword ptr [ebp-0x0C], ecx
        mov      ecx, gword ptr [ebp-0x0C]
        mov      edx, 0xD1FFAB1E
@@ -58,19 +50,19 @@ G_M29273_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     gword ptr [ebp+0x10]
        push     gword ptr [ebp+0x0C]
        push     gword ptr [ebp+0x08]
-       mov      edx, gword ptr [ebp-0x14]
+       mov      edx, gword ptr [ebp-0x08]
        ; gcrRegs +[edx]
-       mov      ecx, gword ptr [ebp-0x18]
+       mov      ecx, gword ptr [ebp-0x04]
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
-                       ;; size=76 bbWeight=1 PerfScore 29.25
+                       ;; size=64 bbWeight=1 PerfScore 25.25
 G_M29273_IG03:        ; bbWeight=1, epilog, nogc, extend
        mov      esp, ebp
        pop      ebp
        ret      16
                        ;; size=6 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 108, prolog size 20, PerfScore 39.75, instruction count 37, allocated bytes for code 108 (MethodHash=65478da6) for method Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)
+; Total bytes of code 90, prolog size 14, PerfScore 33.75, instruction count 31, allocated bytes for code 90 (MethodHash=65478da6) for method Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)
 ; ============================================================
 

-20 (-14.93%) : 50.dasm - System.Buffer:Memmoveushort (Instrumented Tier0)

@@ -10,34 +10,23 @@
 ;  V02 arg2         [V02    ] (  1,  1   )     int  ->  [ebp+0x08]  do-not-enreg[]
 ;  V03 tmp0         [V03    ] (  1,  1   )     int  ->  [ebp-0x0C]  do-not-enreg[] "length histogram profile tmp"
 ;  V04 tmp1         [V04    ] (  1,  1   )     int  ->  [ebp-0x10]  do-not-enreg[] "argument with side effect"
-;  V05 tmp2         [V05    ] (  1,  1   )   byref  ->  [ebp-0x14]  do-not-enreg[] must-init "argument with side effect"
-;  V06 tmp3         [V06    ] (  1,  1   )   byref  ->  [ebp-0x18]  do-not-enreg[] must-init "argument with side effect"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 16
 
 G_M13625_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 24
-       xor      eax, eax
-       mov      dword ptr [ebp-0x14], eax
-       mov      dword ptr [ebp-0x18], eax
+       sub      esp, 16
        mov      bword ptr [ebp-0x04], ecx
        mov      bword ptr [ebp-0x08], edx
-                       ;; size=20 bbWeight=1 PerfScore 5.75
+                       ;; size=12 bbWeight=1 PerfScore 3.50
 G_M13625_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        call     [<unknown method>]
        test     eax, eax
        jne      SHORT G_M13625_IG04
        mov      ecx, 0xD1FFAB1E
        call     CORINFO_HELP_COUNTPROFILE32
-       mov      ecx, bword ptr [ebp-0x04]
-       ; byrRegs +[ecx]
-       mov      bword ptr [ebp-0x18], ecx
-       mov      ecx, bword ptr [ebp-0x08]
-       mov      bword ptr [ebp-0x14], ecx
        mov      ecx, dword ptr [ebp+0x08]
-       ; byrRegs -[ecx]
        add      ecx, ecx
        mov      dword ptr [ebp-0x0C], ecx
        mov      ecx, dword ptr [ebp-0x0C]
@@ -46,13 +35,13 @@ G_M13625_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      edx, 0xD1FFAB1E
        call     CORINFO_HELP_VALUEPROFILE32
        push     dword ptr [ebp-0x0C]
-       mov      edx, bword ptr [ebp-0x14]
+       mov      edx, bword ptr [ebp-0x08]
        ; byrRegs +[edx]
-       mov      ecx, bword ptr [ebp-0x18]
+       mov      ecx, bword ptr [ebp-0x04]
        ; byrRegs +[ecx]
        call     [<unknown method>]
        ; byrRegs -[ecx edx]
-                       ;; size=74 bbWeight=1 PerfScore 22.00
+                       ;; size=62 bbWeight=1 PerfScore 18.00
 G_M13625_IG03:        ; bbWeight=1, epilog, nogc, extend
        mov      esp, ebp
        pop      ebp
@@ -77,6 +66,6 @@ G_M13625_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      4
                        ;; size=6 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 134, prolog size 14, PerfScore 41.75, instruction count 43, allocated bytes for code 134 (MethodHash=19ebcac6) for method System.Buffer:Memmove[ushort](byref,byref,uint) (Instrumented Tier0)
+; Total bytes of code 114, prolog size 6, PerfScore 35.50, instruction count 36, allocated bytes for code 114 (MethodHash=19ebcac6) for method System.Buffer:Memmove[ushort](byref,byref,uint) (Instrumented Tier0)
 ; ============================================================
 

-11 (-14.29%) : 28474.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)

@@ -7,35 +7,28 @@
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [ebp-0x04]  do-not-enreg[] this class-hnd <Benchstone.MDBenchI.MDAddArray2>
 ;  V01 tmp0         [V01    ] (  1,  1   )  struct ( 8) [ebp-0x0C]  do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-;  TEMP_01                                   byref  ->  [ebp-0x10]
 ;
-; Lcl frame size = 16
+; Lcl frame size = 12
 
 G_M41305_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 16
-       xor      eax, eax
-       mov      dword ptr [ebp-0x10], eax
+       sub      esp, 12
        mov      gword ptr [ebp-0x04], ecx
-                       ;; size=14 bbWeight=1 PerfScore 3.75
+                       ;; size=9 bbWeight=1 PerfScore 2.50
 G_M41305_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       mov      ecx, gword ptr [ebp-0x04]
-       ; gcrRegs +[ecx]
-       lea      edx, bword ptr [ecx+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x10], edx
        mov      dword ptr [ebp-0x0C], 201
        mov      dword ptr [ebp-0x08], 201
        lea      ecx, [ebp-0x0C]
-       ; gcrRegs -[ecx]
        push     ecx
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        mov      edx, 2
-       ; byrRegs -[edx]
        call     CORINFO_HELP_NEW_MDARR
        ; gcrRegs +[eax]
-       mov      edx, bword ptr [ebp-0x10]
+       mov      edx, gword ptr [ebp-0x04]
+       ; gcrRegs +[edx]
+       lea      edx, bword ptr [edx+0x04]
+       ; gcrRegs -[edx]
        ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
@@ -44,13 +37,13 @@ G_M41305_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx]
-                       ;; size=59 bbWeight=1 PerfScore 13.50
+                       ;; size=53 bbWeight=1 PerfScore 11.50
 G_M41305_IG03:        ; bbWeight=1, epilog, nogc, extend
        mov      esp, ebp
        pop      ebp
        ret      
                        ;; size=4 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 77, prolog size 11, PerfScore 19.00, instruction count 23, allocated bytes for code 77 (MethodHash=b8d25ea6) for method Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
+; Total bytes of code 66, prolog size 6, PerfScore 15.75, instruction count 19, allocated bytes for code 66 (MethodHash=b8d25ea6) for method Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
 ; ============================================================
 

+5 (+2.79%) : 6997.dasm - System.IO.Compression.ZLibNative+ZLibStreamHandle:EnsureState(int):this (Instrumented Tier0)

@@ -14,19 +14,22 @@
 ;  V06 tmp4         [V06    ] (  1,  1   )     ref  ->  [ebp-0x1C]  do-not-enreg[] must-init "argument with side effect"
 ;  V07 tmp5         [V07    ] (  1,  1   )     ref  ->  [ebp-0x20]  do-not-enreg[] must-init "argument with side effect"
 ;  V08 tmp6         [V08    ] (  1,  1   )     ref  ->  [ebp-0x24]  do-not-enreg[] must-init "argument with side effect"
-;  V09 tmp7         [V09    ] (  1,  1   )     ref  ->  [ebp-0x28]  do-not-enreg[] must-init "argument with side effect"
 ;
-; Lcl frame size = 40
+; Lcl frame size = 36
 
 G_M20604_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 40
+       sub      esp, 36
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [ebp-0x28], ymm4
+       vmovdqu  xmmword ptr [ebp-0x24], xmm4
+       xor      eax, eax
+       mov      dword ptr [ebp-0x14], eax
+       mov      dword ptr [ebp-0x10], eax
+       mov      dword ptr [ebp-0x0C], eax
        mov      gword ptr [ebp-0x04], ecx
        mov      dword ptr [ebp-0x08], edx
-                       ;; size=21 bbWeight=1 PerfScore 5.83
+                       ;; size=32 bbWeight=1 PerfScore 9.08
 G_M20604_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      ecx, gword ptr [ebp-0x04]
        ; gcrRegs +[ecx]
@@ -50,11 +53,7 @@ G_M20604_IG03:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
        mov      gword ptr [ebp-0x10], eax
-       mov      ecx, gword ptr [ebp-0x10]
-       ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x28], ecx
        mov      ecx, 0xBF9
-       ; gcrRegs -[ecx]
        mov      edx, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      gword ptr [ebp-0x1C], eax
@@ -86,7 +85,7 @@ G_M20604_IG03:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      gword ptr [ebp-0x24], eax
        mov      edx, gword ptr [ebp-0x24]
        ; gcrRegs +[edx]
-       mov      ecx, gword ptr [ebp-0x28]
+       mov      ecx, gword ptr [ebp-0x10]
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
@@ -94,13 +93,13 @@ G_M20604_IG03:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        ; gcrRegs +[ecx]
        call     CORINFO_HELP_THROW
        ; gcrRegs -[ecx]
-                       ;; size=136 bbWeight=0 PerfScore 0.00
+                       ;; size=130 bbWeight=0 PerfScore 0.00
 G_M20604_IG04:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
        mov      esp, ebp
        pop      ebp
        ret      
                        ;; size=4 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 179, prolog size 15, PerfScore 14.58, instruction count 51, allocated bytes for code 179 (MethodHash=e494af83) for method System.IO.Compression.ZLibNative+ZLibStreamHandle:EnsureState(int):this (Instrumented Tier0)
+; Total bytes of code 184, prolog size 26, PerfScore 17.83, instruction count 53, allocated bytes for code 184 (MethodHash=e494af83) for method System.IO.Compression.ZLibNative+ZLibStreamHandle:EnsureState(int):this (Instrumented Tier0)
 ; ============================================================
 

+5 (+2.92%) : 81467.dasm - System.Security.Cryptography.HashAlgorithm:CaptureHashCodeAndReinitialize():ubyte[]:this (Instrumented Tier0)

@@ -13,29 +13,27 @@
 ;  V05 tmp3         [V05    ] (  1,  1   )     ref  ->  [ebp-0x18]  do-not-enreg[] must-init "argument with side effect"
 ;  V06 tmp4         [V06    ] (  1,  1   )     ref  ->  [ebp-0x1C]  do-not-enreg[] must-init "argument with side effect"
 ;  V07 tmp5         [V07    ] (  1,  1   )     ref  ->  [ebp-0x20]  do-not-enreg[] must-init "argument with side effect"
-;  TEMP_01                                   byref  ->  [ebp-0x24]
 ;
-; Lcl frame size = 36
+; Lcl frame size = 32
 
 G_M5479_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 36
+       sub      esp, 32
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [ebp-0x24], ymm4
+       vmovdqu  xmmword ptr [ebp-0x20], xmm4
+       xor      eax, eax
+       mov      dword ptr [ebp-0x10], eax
+       mov      dword ptr [ebp-0x0C], eax
+       mov      dword ptr [ebp-0x08], eax
        mov      gword ptr [ebp-0x04], ecx
-                       ;; size=18 bbWeight=1 PerfScore 4.83
+                       ;; size=29 bbWeight=1 PerfScore 8.08
 G_M5479_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      ecx, gword ptr [ebp-0x04]
        ; gcrRegs +[ecx]
-       lea      edx, bword ptr [ecx+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x24], edx
-       mov      ecx, gword ptr [ebp-0x04]
        mov      gword ptr [ebp-0x0C], ecx
        mov      ecx, gword ptr [ebp-0x0C]
        mov      edx, 0xD1FFAB1E
-       ; byrRegs -[edx]
        call     CORINFO_HELP_CLASSPROFILE32
        ; gcrRegs -[ecx]
        mov      ecx, gword ptr [ebp-0x0C]
@@ -49,7 +47,10 @@ G_M5479_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
        mov      eax, dword ptr [eax+0x30]
        call     [eax+0x1C]<unknown method>
        ; gcrRegs -[ecx] +[eax]
-       mov      edx, bword ptr [ebp-0x24]
+       mov      edx, gword ptr [ebp-0x04]
+       ; gcrRegs +[edx]
+       lea      edx, bword ptr [edx+0x04]
+       ; gcrRegs -[edx]
        ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
@@ -94,13 +95,13 @@ G_M5479_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
        ; gcrRegs -[ecx]
        mov      eax, gword ptr [ebp-0x08]
        ; gcrRegs +[eax]
-                       ;; size=149 bbWeight=1 PerfScore 53.50
+                       ;; size=143 bbWeight=1 PerfScore 51.50
 G_M5479_IG03:        ; bbWeight=1, epilog, nogc, extend
        mov      esp, ebp
        pop      ebp
        ret      
                        ;; size=4 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 171, prolog size 15, PerfScore 60.08, instruction count 53, allocated bytes for code 171 (MethodHash=97b2ea98) for method System.Security.Cryptography.HashAlgorithm:CaptureHashCodeAndReinitialize():ubyte[]:this (Instrumented Tier0)
+; Total bytes of code 176, prolog size 26, PerfScore 61.33, instruction count 55, allocated bytes for code 176 (MethodHash=97b2ea98) for method System.Security.Cryptography.HashAlgorithm:CaptureHashCodeAndReinitialize():ubyte[]:this (Instrumented Tier0)
 ; ============================================================
 

+5 (+3.07%) : 33839.dasm - System.Xml.Serialization.CodeGenerator:get_ReturnLocal():System.Reflection.Emit.LocalBuilder:this (Instrumented Tier0)

@@ -13,18 +13,21 @@
 ;  V05 tmp3         [V05    ] (  1,  1   )     ref  ->  [ebp-0x18]  do-not-enreg[] must-init "handle histogram profile tmp"
 ;  V06 tmp4         [V06    ] (  1,  1   )     ref  ->  [ebp-0x1C]  do-not-enreg[] must-init "argument with side effect"
 ;  V07 tmp5         [V07    ] (  1,  1   )     ref  ->  [ebp-0x20]  do-not-enreg[] must-init "argument with side effect"
-;  V08 tmp6         [V08    ] (  1,  1   )     ref  ->  [ebp-0x24]  do-not-enreg[] must-init "argument with side effect"
 ;
-; Lcl frame size = 36
+; Lcl frame size = 32
 
 G_M16990_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 36
+       sub      esp, 32
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [ebp-0x24], ymm4
+       vmovdqu  xmmword ptr [ebp-0x20], xmm4
+       xor      eax, eax
+       mov      dword ptr [ebp-0x10], eax
+       mov      dword ptr [ebp-0x0C], eax
+       mov      dword ptr [ebp-0x08], eax
        mov      gword ptr [ebp-0x04], ecx
-                       ;; size=18 bbWeight=1 PerfScore 4.83
+                       ;; size=29 bbWeight=1 PerfScore 8.08
 G_M16990_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, gword ptr [ebp-0x04]
        ; gcrRegs +[ecx]
@@ -39,8 +42,6 @@ G_M16990_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        call     CORINFO_HELP_COUNTPROFILE32
        mov      ecx, gword ptr [ebp-0x04]
        ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x24], ecx
-       mov      ecx, gword ptr [ebp-0x04]
        mov      ecx, gword ptr [ecx+0x08]
        mov      gword ptr [ebp-0x18], ecx
        mov      ecx, gword ptr [ebp-0x18]
@@ -62,7 +63,7 @@ G_M16990_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     0xD1FFAB1E
        mov      edx, gword ptr [ebp-0x20]
        ; gcrRegs +[edx]
-       mov      ecx, gword ptr [ebp-0x24]
+       mov      ecx, gword ptr [ebp-0x04]
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
@@ -82,7 +83,7 @@ G_M16990_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      ecx, gword ptr [ebp-0x08]
        ; gcrRegs +[ecx]
        mov      gword ptr [ebp-0x10], ecx
-                       ;; size=128 bbWeight=1 PerfScore 45.00
+                       ;; size=122 bbWeight=1 PerfScore 43.00
 G_M16990_IG03:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ecx]
        mov      ecx, 0xD1FFAB1E
@@ -96,6 +97,6 @@ G_M16990_IG04:        ; bbWeight=1, epilog, nogc, extend
        ret      
                        ;; size=4 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 163, prolog size 15, PerfScore 53.83, instruction count 50, allocated bytes for code 163 (MethodHash=6f55bda1) for method System.Xml.Serialization.CodeGenerator:get_ReturnLocal():System.Reflection.Emit.LocalBuilder:this (Instrumented Tier0)
+; Total bytes of code 168, prolog size 26, PerfScore 55.08, instruction count 52, allocated bytes for code 168 (MethodHash=6f55bda1) for method System.Xml.Serialization.CodeGenerator:get_ReturnLocal():System.Reflection.Emit.LocalBuilder:this (Instrumented Tier0)
 ; ============================================================
 

benchmarks.run_tiered.windows.x86.checked.mch

-11 (-14.29%) : 18249.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)

@@ -7,35 +7,28 @@
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [ebp-0x04]  do-not-enreg[] this class-hnd <Benchstone.MDBenchI.MDAddArray2>
 ;  V01 tmp0         [V01    ] (  1,  1   )  struct ( 8) [ebp-0x0C]  do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-;  TEMP_01                                   byref  ->  [ebp-0x10]
 ;
-; Lcl frame size = 16
+; Lcl frame size = 12
 
 G_M41305_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 16
-       xor      eax, eax
-       mov      dword ptr [ebp-0x10], eax
+       sub      esp, 12
        mov      gword ptr [ebp-0x04], ecx
-                       ;; size=14 bbWeight=1 PerfScore 3.75
+                       ;; size=9 bbWeight=1 PerfScore 2.50
 G_M41305_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       mov      ecx, gword ptr [ebp-0x04]
-       ; gcrRegs +[ecx]
-       lea      edx, bword ptr [ecx+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x10], edx
        mov      dword ptr [ebp-0x0C], 201
        mov      dword ptr [ebp-0x08], 201
        lea      ecx, [ebp-0x0C]
-       ; gcrRegs -[ecx]
        push     ecx
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        mov      edx, 2
-       ; byrRegs -[edx]
        call     CORINFO_HELP_NEW_MDARR
        ; gcrRegs +[eax]
-       mov      edx, bword ptr [ebp-0x10]
+       mov      edx, gword ptr [ebp-0x04]
+       ; gcrRegs +[edx]
+       lea      edx, bword ptr [edx+0x04]
+       ; gcrRegs -[edx]
        ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
@@ -44,13 +37,13 @@ G_M41305_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx]
-                       ;; size=59 bbWeight=1 PerfScore 13.50
+                       ;; size=53 bbWeight=1 PerfScore 11.50
 G_M41305_IG03:        ; bbWeight=1, epilog, nogc, extend
        mov      esp, ebp
        pop      ebp
        ret      
                        ;; size=4 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 77, prolog size 11, PerfScore 19.00, instruction count 23, allocated bytes for code 77 (MethodHash=b8d25ea6) for method Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
+; Total bytes of code 66, prolog size 6, PerfScore 15.75, instruction count 19, allocated bytes for code 66 (MethodHash=b8d25ea6) for method Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
 ; ============================================================
 

-11 (-14.29%) : 23201.dasm - Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)

@@ -7,35 +7,28 @@
 ;
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [ebp-0x04]  do-not-enreg[] this class-hnd <Benchstone.MDBenchI.MDXposMatrix>
 ;  V01 tmp0         [V01    ] (  1,  1   )  struct ( 8) [ebp-0x0C]  do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-;  TEMP_01                                   byref  ->  [ebp-0x10]
 ;
-; Lcl frame size = 16
+; Lcl frame size = 12
 
 G_M52764_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 16
-       xor      eax, eax
-       mov      dword ptr [ebp-0x10], eax
+       sub      esp, 12
        mov      gword ptr [ebp-0x04], ecx
-                       ;; size=14 bbWeight=1 PerfScore 3.75
+                       ;; size=9 bbWeight=1 PerfScore 2.50
 G_M52764_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       mov      ecx, gword ptr [ebp-0x04]
-       ; gcrRegs +[ecx]
-       lea      edx, bword ptr [ecx+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x10], edx
        mov      dword ptr [ebp-0x0C], 101
        mov      dword ptr [ebp-0x08], 101
        lea      ecx, [ebp-0x0C]
-       ; gcrRegs -[ecx]
        push     ecx
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        mov      edx, 2
-       ; byrRegs -[edx]
        call     CORINFO_HELP_NEW_MDARR
        ; gcrRegs +[eax]
-       mov      edx, bword ptr [ebp-0x10]
+       mov      edx, gword ptr [ebp-0x04]
+       ; gcrRegs +[edx]
+       lea      edx, bword ptr [edx+0x04]
+       ; gcrRegs -[edx]
        ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
@@ -44,13 +37,13 @@ G_M52764_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx]
-                       ;; size=59 bbWeight=1 PerfScore 13.50
+                       ;; size=53 bbWeight=1 PerfScore 11.50
 G_M52764_IG03:        ; bbWeight=1, epilog, nogc, extend
        mov      esp, ebp
        pop      ebp
        ret      
                        ;; size=4 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 77, prolog size 11, PerfScore 19.00, instruction count 23, allocated bytes for code 77 (MethodHash=136e31e3) for method Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
+; Total bytes of code 66, prolog size 6, PerfScore 15.75, instruction count 19, allocated bytes for code 66 (MethodHash=136e31e3) for method Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
 ; ============================================================
 

-8 (-14.04%) : 17247.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (Tier1)

@@ -9,7 +9,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  5   )     ref  ->  ebx         this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
-;  V01 tmp0         [V01,T01] (  2,  4   )   ubyte  ->  ecx         "Inlining Arg"
+;* V01 tmp0         [V01    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;
 ; Lcl frame size = 0
 
@@ -32,11 +32,8 @@ G_M21281_IG02:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        mov      ecx, 1
        xchg     dword ptr [ebx], ecx
        test     ecx, ecx
-       sete     cl
-       movzx    ecx, cl
-       test     ecx, ecx
-       jne      SHORT G_M21281_IG04
-                       ;; size=32 bbWeight=1 PerfScore 29.50
+       je       SHORT G_M21281_IG04
+                       ;; size=24 bbWeight=1 PerfScore 28.00
 G_M21281_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; byrRegs -[ebx]
        mov      ecx, 0xD1FFAB1E
@@ -52,6 +49,6 @@ G_M21281_IG04:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        ret      
                        ;; size=3 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 57, prolog size 4, PerfScore 35.75, instruction count 21, allocated bytes for code 57 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (Tier1)
+; Total bytes of code 49, prolog size 4, PerfScore 34.25, instruction count 18, allocated bytes for code 49 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (Tier1)
 ; ============================================================
 

+36 (+1.47%) : 14038.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)

@@ -9,50 +9,50 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] ( 48, 63   )     ref  ->  [ebp-0xAC]  this class-hnd single-def <System.Reflection.Emit.RuntimeTypeBuilder>
-;  V01 loc0         [V01,T36] (  3,  8.50)     ref  ->  [ebp-0xB0]  class-hnd exact spill-single-def <int[]>
-;  V02 loc1         [V02,T72] (  5,  2.50)     int  ->  edi        
+;  V01 loc0         [V01,T34] (  3,  8.50)     ref  ->  [ebp-0xB0]  class-hnd exact spill-single-def <int[]>
+;  V02 loc1         [V02,T70] (  5,  2.50)     int  ->  edi        
 ;  V03 loc2         [V03    ] (  9,  7.50)     ref  ->  [ebp-0x24]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.Emit.RuntimeModuleBuilder>
-;  V04 loc3         [V04,T59] (  3,  5   )     int  ->  [ebp-0x28]  spill-single-def
+;  V04 loc3         [V04,T57] (  3,  5   )     int  ->  [ebp-0x28]  spill-single-def
 ;  V05 loc4         [V05    ] (  4,  2   )     ref  ->  [ebp-0x2C]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.RuntimeType>
 ;  V06 loc5         [V06,T02] (  9, 32.50)     int  ->  [ebp-0x30] 
-;  V07 loc6         [V07,T29] (  8, 11   )     ref  ->  [ebp-0xB4]  class-hnd <int[]>
+;  V07 loc6         [V07,T27] (  8, 11   )     ref  ->  [ebp-0xB4]  class-hnd <int[]>
 ;* V08 loc7         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;  V09 loc8         [V09,T03] (  9, 32.50)     int  ->  [ebp-0x34] 
 ;* V10 loc9         [V10    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.Emit.RuntimeTypeBuilder+CustAttr]>
 ;* V11 loc10        [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.Reflection.Emit.RuntimeTypeBuilder+CustAttr>
-;  V12 loc11        [V12,T34] (  4,  9   )     ref  ->  edi         class-hnd exact single-def <<unknown class>>
+;  V12 loc11        [V12,T32] (  4,  9   )     ref  ->  edi         class-hnd exact single-def <<unknown class>>
 ;  V13 loc12        [V13,T15] (  5, 16.50)     int  ->  [ebp-0x38] 
 ;* V14 loc13        [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
 ;  V15 loc14        [V15,T05] (  7, 24.50)     int  ->  [ebp-0x3C] 
 ;  V16 loc15        [V16,T00] ( 30, 64   )     ref  ->  [ebp-0xB8]  class-hnd exact spill-single-def <System.Reflection.Emit.RuntimeMethodBuilder>
-;  V17 loc16        [V17,T27] (  4, 12   )     int  ->  [ebp-0x40]  spill-single-def
-;  V18 loc17        [V18,T51] (  3,  6   )     ref  ->  [ebp-0xBC]  class-hnd spill-single-def <ubyte[]>
+;  V17 loc16        [V17,T25] (  4, 12   )     int  ->  [ebp-0x40]  spill-single-def
+;  V18 loc17        [V18,T49] (  3,  6   )     ref  ->  [ebp-0xBC]  class-hnd spill-single-def <ubyte[]>
 ;  V19 loc18        [V19    ] (  2,  4   )     int  ->  [ebp-0x44]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V20 loc19        [V20,T14] ( 11, 22   )     ref  ->  [ebp-0xC0]  class-hnd <ubyte[]>
 ;* V21 loc20        [V21    ] (  0,  0   )     int  ->  zero-ref   
-;  V22 loc21        [V22,T31] (  5, 10   )     ref  ->  [ebp-0xC4]  class-hnd exact spill-single-def <System.Reflection.Emit.ExceptionHandler[]>
-;  V23 loc22        [V23,T32] (  5, 10   )     ref  ->  edi         class-hnd <int[]>
-;  V24 tmp0         [V24,T17] (  2, 16   )     ref  ->  ecx         class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-;  V25 tmp1         [V25,T23] (  2, 16   )     int  ->  eax         "Strict ordering of exceptions for Array store"
+;  V22 loc21        [V22,T29] (  5, 10   )     ref  ->  [ebp-0xC4]  class-hnd exact spill-single-def <System.Reflection.Emit.ExceptionHandler[]>
+;  V23 loc22        [V23,T30] (  5, 10   )     ref  ->  edi         class-hnd <int[]>
+;  V24 tmp0         [V24,T17] (  2, 16   )     ref  ->  [ebp-0xC8]  class-hnd exact spill-single-def "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V25 tmp1         [V25,T21] (  2, 16   )     int  ->  eax         "Strict ordering of exceptions for Array store"
 ;* V26 tmp2         [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
 ;* V27 tmp3         [V27    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Runtime.CompilerServices.QCallModule>
-;  V28 tmp4         [V28,T44] (  2,  8   )     int  ->  [ebp-0x48]  spill-single-def "impAppendStmt"
+;  V28 tmp4         [V28,T42] (  2,  8   )     int  ->  [ebp-0x48]  spill-single-def "impAppendStmt"
 ;* V29 tmp5         [V29    ] (  0,  0   )  struct ( 8) zero-ref    <System.Runtime.CompilerServices.QCallModule>
 ;* V30 tmp6         [V30    ] (  0,  0   )     int  ->  zero-ref   
-;  V31 tmp7         [V31,T62] (  2,  4   )     int  ->  [ebp-0x4C]  spill-single-def
+;  V31 tmp7         [V31,T60] (  2,  4   )     int  ->  [ebp-0x4C]  spill-single-def
 ;* V32 tmp8         [V32    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V33 tmp9         [V33    ] (  0,  0   )  struct ( 8) zero-ref    <System.Runtime.CompilerServices.QCallModule>
 ;* V34 tmp10        [V34    ] (  0,  0   )     int  ->  zero-ref   
 ;* V35 tmp11        [V35    ] (  0,  0   )     int  ->  zero-ref   
 ;* V36 tmp12        [V36    ] (  0,  0   )     ref  ->  zero-ref   
-;  V37 tmp13        [V37,T53] (  3,  6   )     int  ->  [ebp-0x50] 
+;  V37 tmp13        [V37,T51] (  3,  6   )     int  ->  [ebp-0x50] 
 ;* V38 tmp14        [V38    ] (  0,  0   )  struct ( 8) zero-ref    <System.Runtime.CompilerServices.QCallModule>
 ;* V39 tmp15        [V39    ] (  0,  0   )     int  ->  zero-ref   
 ;* V40 tmp16        [V40    ] (  0,  0   )     int  ->  zero-ref   
 ;* V41 tmp17        [V41    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V42 tmp18        [V42    ] (  0,  0   )     int  ->  zero-ref   
 ;* V43 tmp19        [V43    ] (  0,  0   )     ref  ->  zero-ref   
-;  V44 tmp20        [V44,T63] (  2,  4   )     int  ->  [ebp-0x54]  spill-single-def
+;  V44 tmp20        [V44,T61] (  2,  4   )     int  ->  [ebp-0x54]  spill-single-def
 ;* V45 tmp21        [V45    ] (  0,  0   )     int  ->  zero-ref   
 ;* V46 tmp22        [V46    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V47 tmp23        [V47    ] (  0,  0   )  struct ( 8) zero-ref    <System.Runtime.CompilerServices.QCallModule>
@@ -64,7 +64,7 @@
 ;* V53 tmp29        [V53    ] (  0,  0   )     int  ->  zero-ref   
 ;* V54 tmp30        [V54    ] (  0,  0   )     int  ->  zero-ref   
 ;* V55 tmp31        [V55    ] (  0,  0   )     ref  ->  zero-ref   
-;  V56 tmp32        [V56,T54] (  3,  6   )     int  ->  [ebp-0x58] 
+;  V56 tmp32        [V56,T52] (  3,  6   )     int  ->  [ebp-0x58] 
 ;* V57 tmp33        [V57    ] (  0,  0   )  struct ( 8) zero-ref    <System.Runtime.CompilerServices.QCallModule>
 ;* V58 tmp34        [V58    ] (  0,  0   )     int  ->  zero-ref   
 ;* V59 tmp35        [V59    ] (  0,  0   )     int  ->  zero-ref   
@@ -87,26 +87,26 @@
 ;* V76 tmp52        [V76    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V77 tmp53        [V77    ] (  0,  0   )     int  ->  zero-ref   
 ;* V78 tmp54        [V78    ] (  0,  0   )     ref  ->  zero-ref   
-;  V79 tmp55        [V79,T55] (  3,  6   )     int  ->  [ebp-0x5C] 
-;  V80 tmp56        [V80,T114] (  2,  0   )     ref  ->  esi         class-hnd exact "impAppendStmt" <System.String>
-;  V81 tmp57        [V81,T111] (  3,  0   )     ref  ->  edi         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V79 tmp55        [V79,T53] (  3,  6   )     int  ->  [ebp-0x5C] 
+;  V80 tmp56        [V80,T112] (  2,  0   )     ref  ->  esi         class-hnd exact "impAppendStmt" <System.String>
+;  V81 tmp57        [V81,T109] (  3,  0   )     ref  ->  edi         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V82 tmp58        [V82    ] (  0,  0   )     ref  ->  zero-ref    "CASTCLASS eval op1"
-;  V83 tmp59        [V83,T60] (  3,  5   )     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;  V84 tmp60        [V84,T25] (  5, 15   )     ref  ->  eax         class-hnd "spilling QMark2" <System.Reflection.Emit.RuntimeILGenerator>
-;  V85 tmp61        [V85,T115] (  2,  0   )     ref  ->  esi         class-hnd exact "impAppendStmt" <System.String>
-;  V86 tmp62        [V86,T112] (  3,  0   )     ref  ->  edi         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V87 tmp63        [V87,T113] (  3,  0   )     ref  ->  esi         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V83 tmp59        [V83,T58] (  3,  5   )     int  ->  ecx         "fgMakeTemp is creating a new local variable"
+;  V84 tmp60        [V84,T23] (  5, 15   )     ref  ->  eax         class-hnd "spilling QMark2" <System.Reflection.Emit.RuntimeILGenerator>
+;  V85 tmp61        [V85,T113] (  2,  0   )     ref  ->  esi         class-hnd exact "impAppendStmt" <System.String>
+;  V86 tmp62        [V86,T110] (  3,  0   )     ref  ->  edi         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V87 tmp63        [V87,T111] (  3,  0   )     ref  ->  esi         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V88 tmp64        [V88    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
 ;* V89 tmp65        [V89    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Runtime.CompilerServices.QCallModule>
-;  V90 tmp66        [V90,T83] (  2,  2   )     int  ->  ecx         "impAppendStmt"
+;  V90 tmp66        [V90,T81] (  2,  2   )     int  ->  ecx         "impAppendStmt"
 ;* V91 tmp67        [V91    ] (  0,  0   )  struct ( 4) zero-ref    "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
 ;* V92 tmp68        [V92    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
-;  V93 tmp69        [V93,T18] (  2, 16   )     ref  ->  ecx         class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-;  V94 tmp70        [V94,T24] (  2, 16   )     int  ->  eax         "Strict ordering of exceptions for Array store"
-;  V95 tmp71        [V95,T97] (  3,  1.50)     int  ->  [ebp-0x60] 
+;  V93 tmp69        [V93,T18] (  2, 16   )     ref  ->  [ebp-0xCC]  class-hnd exact spill-single-def "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V94 tmp70        [V94,T22] (  2, 16   )     int  ->  eax         "Strict ordering of exceptions for Array store"
+;  V95 tmp71        [V95,T95] (  3,  1.50)     int  ->  [ebp-0x60] 
 ;* V96 tmp72        [V96    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallModule>
 ;* V97 tmp73        [V97    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.Reflection.Emit.RuntimeModuleBuilder>
-;  V98 tmp74        [V98,T67] (  3,  3   )     ref  ->  eax         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V98 tmp74        [V98,T65] (  3,  3   )     ref  ->  eax         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V99 tmp75        [V99    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
 ;  V100 tmp76       [V100,T07] (  3, 24   )     ref  ->  edi         class-hnd "Inlining Arg" <<unknown class>>
 ;* V101 tmp77       [V101    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
@@ -116,45 +116,45 @@
 ;* V105 tmp81       [V105    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
 ;* V106 tmp82       [V106    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V107 tmp83       [V107    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
-;  V108 tmp84       [V108,T68] (  3,  3   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
-;  V109 tmp85       [V109,T76] (  2,  2   )     ref  ->  edi         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V108 tmp84       [V108,T66] (  3,  3   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeMethodBuilder>
+;  V109 tmp85       [V109,T74] (  2,  2   )     ref  ->  edi         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
 ;* V110 tmp86       [V110    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
 ;* V111 tmp87       [V111    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;  V112 tmp88       [V112    ] (  2,  1   )   byref  ->  [ebp-0x64]  do-not-enreg[P] must-init pinned "Inline stloc first use temp"
 ;* V113 tmp89       [V113    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V114 tmp90       [V114,T69] (  3,  3   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V114 tmp90       [V114,T67] (  3,  3   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V115 tmp91       [V115    ] (  2,  1   )   byref  ->  [ebp-0x68]  do-not-enreg[P] must-init pinned "Inline stloc first use temp"
 ;* V116 tmp92       [V116    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V117 tmp93       [V117    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Runtime.CompilerServices.QCallModule>
-;  V118 tmp94       [V118,T84] (  2,  2   )     int  ->  [ebp-0x6C]  spill-single-def "Inlining Arg"
-;  V119 tmp95       [V119,T85] (  2,  2   )     int  ->  [ebp-0x70]  spill-single-def "Inlining Arg"
-;  V120 tmp96       [V120,T101] (  2,  1   )     int  ->  edi         "Inline stloc first use temp"
-;  V121 tmp97       [V121,T88] (  3,  1.50)   byref  ->  edi         "Inline return value spill temp"
-;  V122 tmp98       [V122,T74] (  4,  2   )   byref  ->  ecx         "Inline return value spill temp"
-;  V123 tmp99       [V123,T77] (  2,  2   )     ref  ->  edi         class-hnd single-def "Inlining Arg" <<unknown class>>
+;  V118 tmp94       [V118,T82] (  2,  2   )     int  ->  [ebp-0x6C]  spill-single-def "Inlining Arg"
+;  V119 tmp95       [V119,T83] (  2,  2   )     int  ->  [ebp-0x70]  spill-single-def "Inlining Arg"
+;  V120 tmp96       [V120,T99] (  2,  1   )     int  ->  edi         "Inline stloc first use temp"
+;  V121 tmp97       [V121,T86] (  3,  1.50)   byref  ->  edi         "Inline return value spill temp"
+;  V122 tmp98       [V122,T72] (  4,  2   )   byref  ->  ecx         "Inline return value spill temp"
+;  V123 tmp99       [V123,T75] (  2,  2   )     ref  ->  edi         class-hnd single-def "Inlining Arg" <<unknown class>>
 ;* V124 tmp100      [V124    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Reflection.Emit.RuntimeTypeBuilder+CustAttr]>
-;* V125 tmp101      [V125,T45] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V125 tmp101      [V125,T43] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V126 tmp102      [V126    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V127 tmp103      [V127,T78] (  2,  2   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V127 tmp103      [V127,T76] (  2,  2   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
 ;* V128 tmp104      [V128    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
-;  V129 tmp105      [V129,T04] (  4, 32   )     ref  ->  [ebp-0xC8]  class-hnd exact spill-single-def "Inlining Arg" <System.Reflection.Emit.RuntimeTypeBuilder>
+;  V129 tmp105      [V129,T04] (  4, 32   )     ref  ->  [ebp-0xD0]  class-hnd exact spill-single-def "Inlining Arg" <System.Reflection.Emit.RuntimeTypeBuilder>
 ;* V130 tmp106      [V130    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Reflection.TypeInfo>
-;  V131 tmp107      [V131,T58] (  2,  6   )     ref  ->  eax         class-hnd "Inline stloc first use temp" <System.Reflection.TypeInfo>
-;  V132 tmp108      [V132,T56] (  2,  4   )     int  ->  ecx        
+;  V131 tmp107      [V131,T56] (  2,  6   )     ref  ->  eax         class-hnd "Inline stloc first use temp" <System.Reflection.TypeInfo>
+;  V132 tmp108      [V132,T54] (  2,  4   )     int  ->  ecx        
 ;* V133 tmp109      [V133    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V134 tmp110      [V134    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V135 tmp111      [V135    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
 ;  V136 tmp112      [V136,T09] (  3, 24   )     ref  ->  ecx         class-hnd "Inlining Arg" <<unknown class>>
 ;* V137 tmp113      [V137    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Reflection.Emit.ILGenerator>
-;  V138 tmp114      [V138,T41] (  2,  8   )     ref  ->  edx         class-hnd "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
-;  V139 tmp115      [V139,T35] (  5,  8.50)     ref  ->  edx        
-;  V140 tmp116      [V140,T16] (  4, 16   )     ref  ->  [ebp-0xCC]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
+;  V138 tmp114      [V138,T39] (  2,  8   )     ref  ->  edx         class-hnd "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
+;  V139 tmp115      [V139,T33] (  5,  8.50)     ref  ->  edx        
+;  V140 tmp116      [V140,T16] (  4, 16   )     ref  ->  [ebp-0xD4]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
 ;* V141 tmp117      [V141    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Reflection.Emit.RuntimeILGenerator>
-;  V142 tmp118      [V142,T57] (  3,  6   )     int  ->  [ebp-0x74]  "Inline return value spill temp"
-;  V143 tmp119      [V143,T42] (  2,  8   )     ref  ->  esi         class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V142 tmp118      [V142,T55] (  3,  6   )     int  ->  [ebp-0x74]  "Inline return value spill temp"
+;  V143 tmp119      [V143,T40] (  2,  8   )     ref  ->  esi         class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
 ;* V144 tmp120      [V144    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
 ;* V145 tmp121      [V145    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V146 tmp122      [V146,T64] (  2,  4   )     int  ->  [ebp-0x78]  spill-single-def "Inline stloc first use temp"
+;  V146 tmp122      [V146,T62] (  2,  4   )     int  ->  [ebp-0x78]  spill-single-def "Inline stloc first use temp"
 ;  V147 tmp123      [V147    ] (  2,  4   )   byref  ->  [ebp-0x7C]  do-not-enreg[P] must-init pinned "Inline stloc first use temp"
 ;* V148 tmp124      [V148    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V149 tmp125      [V149    ] (  2,  4   )   byref  ->  [ebp-0x80]  do-not-enreg[P] must-init pinned "Inline stloc first use temp"
@@ -163,29 +163,29 @@
 ;* V152 tmp128      [V152    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V153 tmp129      [V153    ] (  2,  4   )   byref  ->  [ebp-0x88]  do-not-enreg[P] must-init pinned "Inline stloc first use temp"
 ;* V154 tmp130      [V154    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V155 tmp131      [V155,T37] (  4,  8   )   byref  ->  edi         "Inline return value spill temp"
-;  V156 tmp132      [V156,T38] (  4,  8   )   byref  ->  edx         "Inline return value spill temp"
-;  V157 tmp133      [V157,T39] (  4,  8   )   byref  ->  esi         "Inline return value spill temp"
-;  V158 tmp134      [V158,T40] (  4,  8   )   byref  ->  ecx         "Inline return value spill temp"
+;  V155 tmp131      [V155,T35] (  4,  8   )   byref  ->  edi         "Inline return value spill temp"
+;  V156 tmp132      [V156,T36] (  4,  8   )   byref  ->  edx         "Inline return value spill temp"
+;  V157 tmp133      [V157,T37] (  4,  8   )   byref  ->  esi         "Inline return value spill temp"
+;  V158 tmp134      [V158,T38] (  4,  8   )   byref  ->  ecx         "Inline return value spill temp"
 ;* V159 tmp135      [V159    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
-;  V160 tmp136      [V160,T79] (  2,  2   )     ref  ->  edx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
+;  V160 tmp136      [V160,T77] (  2,  2   )     ref  ->  edx         class-hnd exact single-def "Inlining Arg" <System.Reflection.Emit.RuntimeModuleBuilder>
 ;* V161 tmp137      [V161    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.RuntimeModule>
 ;* V162 tmp138      [V162    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
 ;* V163 tmp139      [V163    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V164 tmp140      [V164,T70] (  3,  3   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
-;  V165 tmp141      [V165,T89] (  3,  1.50)     ref  ->  edi         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
-;  V166 tmp142      [V166,T71] (  5,  2.50)     ref  ->  edi         class-hnd single-def "Inline stloc first use temp" <System.Object>
-;  V167 tmp143      [V167,T80] (  2,  2   )     ref  ->  ecx         class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
+;  V164 tmp140      [V164,T68] (  3,  3   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
+;  V165 tmp141      [V165,T87] (  3,  1.50)     ref  ->  edi         class-hnd "Inline return value spill temp" <System.RuntimeType+RuntimeTypeCache>
+;  V166 tmp142      [V166,T69] (  5,  2.50)     ref  ->  edi         class-hnd single-def "Inline stloc first use temp" <System.Object>
+;  V167 tmp143      [V167,T78] (  2,  2   )     ref  ->  ecx         class-hnd "spilling QMark2" <System.RuntimeType+RuntimeTypeCache>
 ;* V168 tmp144      [V168    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.RuntimeType+RuntimeTypeCache>
-;  V169 tmp145      [V169,T50] (  5, 13   )     ref  ->  eax         "Single return block return value"
-;  V170 FramesRoot  [V170,T30] ( 11, 10   )     int  ->  [ebp-0x8C]  spill-single-def "Pinvoke FrameListRoot"
-;  V171 PInvokeFrame[V171    ] ( 20, 18   )  struct (32) [ebp-0xEC]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-;  V172 tmp148      [V172,T26] (  4, 12.50)     ref  ->  edi         single-def "field V10._list (fldOffset=0x0)" P-INDEP
-;  V173 tmp149      [V173,T33] (  2,  6   )     ref  ->  ecx         "field V10._current (fldOffset=0x4)" P-INDEP
+;  V169 tmp145      [V169,T48] (  5, 13   )     ref  ->  eax         "Single return block return value"
+;  V170 FramesRoot  [V170,T28] ( 11, 10   )     int  ->  [ebp-0x8C]  spill-single-def "Pinvoke FrameListRoot"
+;  V171 PInvokeFrame[V171    ] ( 20, 18   )  struct (32) [ebp-0xF4]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V172 tmp148      [V172,T24] (  4, 12.50)     ref  ->  edi         single-def "field V10._list (fldOffset=0x0)" P-INDEP
+;  V173 tmp149      [V173,T31] (  2,  6   )     ref  ->  ecx         "field V10._current (fldOffset=0x4)" P-INDEP
 ;  V174 tmp150      [V174,T06] (  6, 20.50)     int  ->  [ebp-0x90]  "field V10._index (fldOffset=0x8)" P-INDEP
-;  V175 tmp151      [V175,T61] (  2,  4.50)     int  ->  [ebp-0x94]  spill-single-def "field V10._version (fldOffset=0xc)" P-INDEP
-;  V176 tmp152      [V176,T65] (  2,  4   )     int  ->  [ebp-0x98]  spill-single-def "field V26._ptr (fldOffset=0x0)" P-INDEP
-;  V177 tmp153      [V177,T66] (  2,  4   )     int  ->  [ebp-0x9C]  spill-single-def "field V26._module (fldOffset=0x4)" P-INDEP
+;  V175 tmp151      [V175,T59] (  2,  4.50)     int  ->  [ebp-0x94]  spill-single-def "field V10._version (fldOffset=0xc)" P-INDEP
+;  V176 tmp152      [V176,T63] (  2,  4   )     int  ->  [ebp-0x98]  spill-single-def "field V26._ptr (fldOffset=0x0)" P-INDEP
+;  V177 tmp153      [V177,T64] (  2,  4   )     int  ->  [ebp-0x9C]  spill-single-def "field V26._module (fldOffset=0x4)" P-INDEP
 ;* V178 tmp154      [V178    ] (  0,  0   )     int  ->  zero-ref    "field V27._ptr (fldOffset=0x0)" P-INDEP
 ;* V179 tmp155      [V179    ] (  0,  0   )     int  ->  zero-ref    "field V27._module (fldOffset=0x4)" P-INDEP
 ;* V180 tmp156      [V180    ] (  0,  0   )     int  ->  zero-ref    "field V29._ptr (fldOffset=0x0)" P-INDEP
@@ -200,58 +200,56 @@
 ;* V189 tmp165      [V189    ] (  0,  0   )     int  ->  zero-ref    "field V57._module (fldOffset=0x4)" P-INDEP
 ;* V190 tmp166      [V190    ] (  0,  0   )     int  ->  zero-ref    "field V68._ptr (fldOffset=0x0)" P-INDEP
 ;* V191 tmp167      [V191    ] (  0,  0   )     int  ->  zero-ref    "field V68._module (fldOffset=0x4)" P-INDEP
-;  V192 tmp168      [V192,T102] (  2,  1   )     int  ->  eax         "field V88._ptr (fldOffset=0x0)" P-INDEP
-;  V193 tmp169      [V193,T103] (  2,  1   )     int  ->  edx         "field V88._module (fldOffset=0x4)" P-INDEP
+;  V192 tmp168      [V192,T100] (  2,  1   )     int  ->  eax         "field V88._ptr (fldOffset=0x0)" P-INDEP
+;  V193 tmp169      [V193,T101] (  2,  1   )     int  ->  edx         "field V88._module (fldOffset=0x4)" P-INDEP
 ;* V194 tmp170      [V194    ] (  0,  0   )     int  ->  zero-ref    "field V89._ptr (fldOffset=0x0)" P-INDEP
 ;* V195 tmp171      [V195    ] (  0,  0   )     int  ->  zero-ref    "field V89._module (fldOffset=0x4)" P-INDEP
 ;* V196 tmp172      [V196    ] (  0,  0   )     int  ->  zero-ref    "field V91._ptr (fldOffset=0x0)" P-INDEP
-;  V197 tmp173      [V197,T104] (  2,  1   )     int  ->  edx         "field V92._ptr (fldOffset=0x0)" P-INDEP
-;  V198 tmp174      [V198,T105] (  2,  1   )     int  ->  ecx         "field V92._module (fldOffset=0x4)" P-INDEP
-;  V199 tmp175      [V199,T106] (  2,  1   )     int  ->  [ebp-0xA0]  spill-single-def "field V96._ptr (fldOffset=0x0)" P-INDEP
-;  V200 tmp176      [V200,T107] (  2,  1   )     int  ->  [ebp-0xA4]  spill-single-def "field V96._module (fldOffset=0x4)" P-INDEP
+;  V197 tmp173      [V197,T102] (  2,  1   )     int  ->  edx         "field V92._ptr (fldOffset=0x0)" P-INDEP
+;  V198 tmp174      [V198,T103] (  2,  1   )     int  ->  ecx         "field V92._module (fldOffset=0x4)" P-INDEP
+;  V199 tmp175      [V199,T104] (  2,  1   )     int  ->  [ebp-0xA0]  spill-single-def "field V96._ptr (fldOffset=0x0)" P-INDEP
+;  V200 tmp176      [V200,T105] (  2,  1   )     int  ->  [ebp-0xA4]  spill-single-def "field V96._module (fldOffset=0x4)" P-INDEP
 ;* V201 tmp177      [V201    ] (  0,  0   )     int  ->  zero-ref    "field V117._ptr (fldOffset=0x0)" P-INDEP
 ;* V202 tmp178      [V202    ] (  0,  0   )     int  ->  zero-ref    "field V117._module (fldOffset=0x4)" P-INDEP
-;  V203 tmp179      [V203,T90] (  3,  1.50)     ref  ->  edi         single-def "field V124._list (fldOffset=0x0)" P-INDEP
...

+6 (+1.95%) : 17827.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (Tier1)

@@ -9,25 +9,24 @@
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] ( 13,  7.50)     ref  ->  esi         class-hnd single-def <System.Type>
-;  V01 arg1         [V01,T01] ( 12,  8   )     ref  ->  edi         class-hnd single-def <System.Type>
+;  V01 arg1         [V01,T01] ( 10,  7   )     ref  ->  edi         class-hnd single-def <System.Type>
 ;  V02 tmp0         [V02,T05] (  3,  2   )   ubyte  ->  eax         "Inline return value spill temp"
 ;  V03 tmp1         [V03,T12] (  2,  1   )   ubyte  ->  eax         "Inline return value spill temp"
 ;  V04 tmp2         [V04,T13] (  3,  1.50)   ubyte  ->  eax         "Inline return value spill temp"
 ;  V05 tmp3         [V05,T14] (  2,  1   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V06 tmp4         [V06,T06] (  2,  2   )     ref  ->  [ebp-0x10]  spill-single-def "argument with side effect"
+;  V06 tmp4         [V06,T06] (  2,  2   )     ref  ->  [ebp-0x18]  spill-single-def "argument with side effect"
 ;  V07 tmp5         [V07,T07] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V08 tmp6         [V08,T02] (  3,  3   )     ref  ->  eax         single-def "arr expr"
+;  V08 tmp6         [V08,T03] (  3,  3   )     ref  ->  eax         single-def "arr expr"
 ;  V09 tmp7         [V09,T08] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;* V10 tmp8         [V10,T17] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V11 tmp9         [V11,T09] (  2,  2   )     ref  ->  [ebp-0x14]  spill-single-def "argument with side effect"
-;  V12 tmp10        [V12,T10] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V13 tmp11        [V13,T03] (  3,  3   )     ref  ->  eax         single-def "arr expr"
-;  V14 tmp12        [V14,T11] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V15 tmp13        [V15,T04] (  3,  3   )     ref  ->  edi         single-def "argument with side effect"
-;  V16 cse0         [V16,T15] (  3,  1.50)     int  ->  ebx         "CSE - conservative"
-;  V17 cse1         [V17,T16] (  3,  1.50)     int  ->  ebx         "CSE - conservative"
+;  V10 tmp8         [V10,T09] (  2,  2   )     ref  ->  [ebp-0x1C]  spill-single-def "argument with side effect"
+;  V11 tmp9         [V11,T10] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V12 tmp10        [V12,T04] (  3,  3   )     ref  ->  eax         single-def "arr expr"
+;  V13 tmp11        [V13,T11] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V14 cse0         [V14,T15] (  3,  1.50)     int  ->  [ebp-0x10]  spill-single-def "CSE - moderate"
+;  V15 cse1         [V15,T16] (  3,  1.50)     int  ->  [ebp-0x14]  spill-single-def "CSE - moderate"
+;  V16 cse2         [V16,T02] (  5,  3.50)     int  ->  ebx         "CSE - aggressive"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M38117_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -35,7 +34,7 @@ G_M38117_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 8
+       sub      esp, 16
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
@@ -44,8 +43,8 @@ G_M38117_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
 G_M38117_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, edi
        ; gcrRegs +[ecx]
-       mov      eax, dword ptr [edi]
-       mov      eax, dword ptr [eax+0x3C]
+       mov      ebx, dword ptr [edi]
+       mov      eax, dword ptr [ebx+0x3C]
        call     [eax+0x04]<unknown method>
        ; gcrRegs -[ecx]
        test     eax, eax
@@ -54,15 +53,15 @@ G_M38117_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
 G_M38117_IG03:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        mov      ecx, edi
        ; gcrRegs +[ecx]
-       mov      eax, dword ptr [edi]
-       mov      ebx, dword ptr [eax+0x40]
-       call     [ebx+0x0C]<unknown method>
+       mov      eax, dword ptr [ebx+0x40]
+       mov      dword ptr [ebp-0x10], eax
+       call     [eax+0x0C]<unknown method>
        ; gcrRegs -[ecx] +[eax]
-       mov      gword ptr [ebp-0x10], eax
+       mov      gword ptr [ebp-0x18], eax
        ; GC ptr vars +{V06}
        test     byte  ptr [D1FFAB1EH], 1      ; global ptr
        je       G_M38117_IG14
-                       ;; size=26 bbWeight=0.50 PerfScore 6.12
+                       ;; size=27 bbWeight=0.50 PerfScore 5.62
 G_M38117_IG04:        ; bbWeight=0.50, gcVars=00000040 {V06}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      edx, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[edx]
@@ -82,7 +81,8 @@ G_M38117_IG04:        ; bbWeight=0.50, gcVars=00000040 {V06}, gcrefRegs=000000C1
        je       SHORT G_M38117_IG05
        mov      ecx, edi
        ; gcrRegs +[ecx]
-       call     [ebx+0x14]<unknown method>
+       mov      eax, dword ptr [ebp-0x10]
+       call     [eax+0x14]<unknown method>
        ; gcrRegs -[ecx] +[eax]
        cmp      dword ptr [eax+0x04], 0
        jbe      G_M38117_IG13
@@ -96,7 +96,7 @@ G_M38117_IG04:        ; bbWeight=0.50, gcVars=00000040 {V06}, gcrefRegs=000000C1
        call     [eax+0x10]<unknown method>
        ; gcrRegs -[ecx edx]
        jmp      SHORT G_M38117_IG06
-                       ;; size=62 bbWeight=0.50 PerfScore 16.25
+                       ;; size=65 bbWeight=0.50 PerfScore 16.75
 G_M38117_IG05:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -123,20 +123,21 @@ G_M38117_IG07:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        mov      ecx, esi
        ; gcrRegs +[ecx]
        mov      eax, dword ptr [esi]
-       mov      ebx, dword ptr [eax+0x40]
-       call     [ebx+0x0C]<unknown method>
+       mov      eax, dword ptr [eax+0x40]
+       mov      dword ptr [ebp-0x14], eax
+       call     [eax+0x0C]<unknown method>
        ; gcrRegs -[ecx] +[eax]
-       mov      gword ptr [ebp-0x14], eax
-       ; GC ptr vars +{V11}
+       mov      gword ptr [ebp-0x1C], eax
+       ; GC ptr vars +{V10}
        test     byte  ptr [D1FFAB1EH], 1      ; global ptr
        je       SHORT G_M38117_IG15
-                       ;; size=36 bbWeight=0.50 PerfScore 10.38
-G_M38117_IG08:        ; bbWeight=0.50, gcVars=00000200 {V11}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+                       ;; size=39 bbWeight=0.50 PerfScore 10.88
+G_M38117_IG08:        ; bbWeight=0.50, gcVars=00000200 {V10}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      edx, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[edx]
        mov      ecx, eax
        ; gcrRegs +[ecx]
-       ; GC ptr vars -{V11}
+       ; GC ptr vars -{V10}
        call     [System.Type:op_Equality(System.Type,System.Type):ubyte]
        ; gcrRegs -[eax ecx edx]
        test     eax, eax
@@ -149,32 +150,32 @@ G_M38117_IG08:        ; bbWeight=0.50, gcVars=00000200 {V11}, gcrefRegs=000000C1
        je       SHORT G_M38117_IG09
        mov      ecx, esi
        ; gcrRegs +[ecx]
-       call     [ebx+0x14]<unknown method>
-       ; gcrRegs -[ecx esi] +[eax]
+       mov      esi, dword ptr [ebp-0x14]
+       ; gcrRegs -[esi]
+       call     [esi+0x14]<unknown method>
+       ; gcrRegs -[ecx] +[eax]
        cmp      dword ptr [eax+0x04], 0
        jbe      SHORT G_M38117_IG13
        mov      edx, gword ptr [eax+0x08]
        ; gcrRegs +[edx]
        mov      ecx, edi
        ; gcrRegs +[ecx]
-       mov      eax, dword ptr [edi]
+       mov      eax, dword ptr [ebx+0x64]
        ; gcrRegs -[eax]
-       mov      eax, dword ptr [eax+0x64]
        call     [eax+0x10]<unknown method>
        ; gcrRegs -[ecx edx edi]
        jmp      SHORT G_M38117_IG10
-                       ;; size=56 bbWeight=0.50 PerfScore 14.75
+                       ;; size=57 bbWeight=0.50 PerfScore 14.25
 G_M38117_IG09:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs +[esi edi]
        mov      ecx, edi
        ; gcrRegs +[ecx]
        mov      edx, esi
        ; gcrRegs +[edx]
-       mov      eax, dword ptr [edi]
-       mov      eax, dword ptr [eax+0x64]
+       mov      eax, dword ptr [ebx+0x64]
        call     [eax+0x10]<unknown method>
        ; gcrRegs -[ecx edx esi edi]
-                       ;; size=12 bbWeight=0.50 PerfScore 3.75
+                       ;; size=10 bbWeight=0.50 PerfScore 2.75
 G_M38117_IG10:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
        lea      esp, [ebp-0x0C]
        pop      ebx
@@ -204,21 +205,21 @@ G_M38117_IG14:        ; bbWeight=0, gcVars=00000040 {V06}, gcrefRegs=000000C1 {e
        mov      edx, 113
        call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
        ; gcrRegs -[eax]
-       mov      eax, gword ptr [ebp-0x10]
+       mov      eax, gword ptr [ebp-0x18]
        ; gcrRegs +[eax]
        jmp      G_M38117_IG04
                        ;; size=23 bbWeight=0 PerfScore 0.00
-G_M38117_IG15:        ; bbWeight=0, gcVars=00000200 {V11}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
-       ; GC ptr vars -{V06} +{V09 V11}
+G_M38117_IG15:        ; bbWeight=0, gcVars=00000200 {V10}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref
+       ; GC ptr vars -{V06} +{V09 V10}
        mov      ecx, 0xD1FFAB1E
        mov      edx, 113
        call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
        ; gcrRegs -[eax]
-       mov      eax, gword ptr [ebp-0x14]
+       mov      eax, gword ptr [ebp-0x1C]
        ; gcrRegs +[eax]
        jmp      G_M38117_IG08
                        ;; size=23 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 307, prolog size 9, PerfScore 73.38, instruction count 109, allocated bytes for code 307 (MethodHash=a1aa6b1a) for method System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (Tier1)
+; Total bytes of code 313, prolog size 9, PerfScore 72.38, instruction count 110, allocated bytes for code 313 (MethodHash=a1aa6b1a) for method System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (Tier1)
 ; ============================================================
 

+8 (+2.05%) : 239.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)

@@ -8,33 +8,33 @@
 ; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T08] (  7,  4.50)     ref  ->  esi         class-hnd single-def <System.String>
-;  V01 loc0         [V01,T10] (  6,  2.38)     ref  ->  edi         class-hnd exact <System.String>
-;  V02 loc1         [V02,T07] (  8, 14.50)     ref  ->  ebx         class-hnd exact single-def <<unknown class>>
-;  V03 loc2         [V03,T02] (  6, 17   )     ref  ->  esi         class-hnd exact single-def <<unknown class>>
-;  V04 loc3         [V04,T00] (  9, 32.50)     int  ->  edi        
+;  V00 arg0         [V00,T07] (  7,  4.50)     ref  ->  esi         class-hnd single-def <System.String>
+;  V01 loc0         [V01,T09] (  6,  2.38)     ref  ->  edi         class-hnd exact <System.String>
+;  V02 loc1         [V02,T06] (  7, 14   )     ref  ->  ebx         class-hnd exact single-def <<unknown class>>
+;  V03 loc2         [V03,T02] (  6, 17   )     ref  ->  edi         class-hnd exact single-def <<unknown class>>
+;  V04 loc3         [V04,T00] (  9, 32.50)     int  ->  [ebp-0x10] 
 ;  V05 loc4         [V05,T03] (  5, 16.50)     int  ->  ebx        
-;  V06 tmp0         [V06,T11] (  2,  2   )     ref  ->  edi         single-def "CASTCLASS eval op1"
+;  V06 tmp0         [V06,T10] (  2,  2   )     ref  ->  edi         single-def "CASTCLASS eval op1"
 ;* V07 tmp1         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.String>
-;  V08 tmp2         [V08,T09] (  3,  3   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V08 tmp2         [V08,T08] (  3,  3   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V09 tmp3         [V09,T04] (  2, 16   )   byref  ->  ecx         "impAppendStmt"
 ;* V10 tmp4         [V10,T16] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V11 tmp5         [V11,T17] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V12 tmp6         [V12    ] (  2,  2   )  ushort  ->  [ebp-0x10]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;  V12 tmp6         [V12    ] (  2,  2   )  ushort  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
 ;* V13 tmp7         [V13    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;  V14 tmp8         [V14    ] (  2,  2   )  ushort  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;  V14 tmp8         [V14    ] (  2,  2   )  ushort  ->  [ebp-0x18]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
 ;* V15 tmp9         [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V16 tmp10        [V16,T14] (  2,  1   )   byref  ->  ecx         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V17 tmp11        [V17,T18] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x4)" P-INDEP
 ;  V18 tmp12        [V18,T15] (  2,  1   )   byref  ->  ecx         single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V19 tmp13        [V19,T19] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
-;  V20 tmp14        [V20,T12] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V21 tmp15        [V21,T13] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V20 tmp14        [V20,T11] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V21 tmp15        [V21,T12] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
 ;  V22 tmp16        [V22,T01] (  3, 24   )     ref  ->  edx         "arr expr"
-;  V23 tmp17        [V23,T05] (  2, 16   )   byref  ->  ecx         "argument with side effect"
-;  V24 tmp18        [V24,T06] (  2, 16   )     ref  ->  edx         "argument with side effect"
+;  V23 tmp17        [V23,T05] (  2, 16   )     ref  ->  edx         "argument with side effect"
+;  V24 cse0         [V24,T13] (  3,  1.50)     int  ->  esi         "CSE - moderate"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M12781_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -42,7 +42,7 @@ G_M12781_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 8
+       sub      esp, 12
        mov      esi, ecx
        ; gcrRegs +[esi]
                        ;; size=11 bbWeight=1 PerfScore 4.75
@@ -113,8 +113,8 @@ G_M12781_IG08:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
                        ;; size=64 bbWeight=0.50 PerfScore 7.88
 G_M12781_IG09:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        movzx    ecx, word  ptr [D1FFAB1EH]      ; static handle
-       mov      word  ptr [ebp-0x10], cx
-       lea      ecx, bword ptr [ebp-0x10]
+       mov      word  ptr [ebp-0x14], cx
+       lea      ecx, bword ptr [ebp-0x14]
        ; byrRegs +[ecx]
        push     1
        push     ecx
@@ -140,8 +140,8 @@ G_M12781_IG10:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
                        ;; size=17 bbWeight=0.50 PerfScore 2.62
 G_M12781_IG11:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
        movzx    ecx, word  ptr [D1FFAB1EH]      ; static handle
-       mov      word  ptr [ebp-0x14], cx
-       lea      ecx, bword ptr [ebp-0x14]
+       mov      word  ptr [ebp-0x18], cx
+       lea      ecx, bword ptr [ebp-0x18]
        ; byrRegs +[ecx]
        push     1
        push     ecx
@@ -160,57 +160,61 @@ G_M12781_IG11:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
        ; gcrRegs -[eax ecx edx]
                        ;; size=42 bbWeight=0.50 PerfScore 6.75
 G_M12781_IG12:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
-       mov      edx, dword ptr [ebx+0x08]
+       mov      esi, dword ptr [ebx+0x08]
+       mov      edx, esi
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWARR_1_VC
        ; gcrRegs +[eax]
-       mov      esi, eax
-       ; gcrRegs +[esi]
-       xor      edi, edi
-       cmp      dword ptr [ebx+0x08], 0
-       jle      SHORT G_M12781_IG14
-                       ;; size=23 bbWeight=0.50 PerfScore 3.88
-G_M12781_IG13:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edi, eax
+       ; gcrRegs +[edi]
+       xor      eax, eax
        ; gcrRegs -[eax]
-       cmp      edi, dword ptr [esi+0x04]
+       test     esi, esi
+       jle      SHORT G_M12781_IG14
+                       ;; size=23 bbWeight=0.50 PerfScore 2.62
+G_M12781_IG13:        ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+       cmp      eax, dword ptr [edi+0x04]
        jae      SHORT G_M12781_IG17
-       lea      ecx, bword ptr [esi+8*edi+0x08]
+       lea      ecx, bword ptr [edi+8*eax+0x08]
        ; byrRegs +[ecx]
-       cmp      edi, dword ptr [ebx+0x08]
+       cmp      eax, dword ptr [ebx+0x08]
        jae      SHORT G_M12781_IG20
        mov      edx, gword ptr [ebx+0x04]
        ; gcrRegs +[edx]
-       cmp      edi, dword ptr [edx+0x04]
+       cmp      eax, dword ptr [edx+0x04]
        jae      SHORT G_M12781_IG17
-       mov      edx, gword ptr [edx+4*edi+0x08]
+       mov      dword ptr [ebp-0x10], eax
+       mov      edx, gword ptr [edx+4*eax+0x08]
        call     [<unknown method>]
        ; gcrRegs -[edx]
        ; byrRegs -[ecx]
-       inc      edi
-       cmp      edi, dword ptr [ebx+0x08]
+       mov      esi, dword ptr [ebp-0x10]
+       inc      esi
+       cmp      esi, dword ptr [ebx+0x08]
+       mov      eax, esi
        jl       SHORT G_M12781_IG13
-                       ;; size=38 bbWeight=4 PerfScore 97.00
-G_M12781_IG14:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+                       ;; size=46 bbWeight=4 PerfScore 106.00
+G_M12781_IG14:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ebx]
        xor      ebx, ebx
-       cmp      dword ptr [esi+0x04], 0
+       cmp      dword ptr [edi+0x04], 0
        jle      G_M12781_IG03
                        ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M12781_IG15:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M12781_IG15:        ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
        lea      eax, [8*ebx]
        add      eax, 8
-       add      eax, esi
+       add      eax, edi
        ; byrRegs +[eax]
        push     gword ptr [eax+0x04]
        push     gword ptr [eax]
        call     [<unknown method>]
        ; byrRegs -[eax]
        inc      ebx
-       cmp      dword ptr [esi+0x04], ebx
+       cmp      dword ptr [edi+0x04], ebx
        jg       SHORT G_M12781_IG15
                        ;; size=29 bbWeight=4 PerfScore 49.00
 G_M12781_IG16:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi]
+       ; gcrRegs -[edi]
        jmp      G_M12781_IG03
                        ;; size=5 bbWeight=0.50 PerfScore 1.00
 G_M12781_IG17:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -236,6 +240,6 @@ G_M12781_IG20:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 390, prolog size 9, PerfScore 195.53, instruction count 115, allocated bytes for code 390 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
+; Total bytes of code 398, prolog size 9, PerfScore 203.28, instruction count 119, allocated bytes for code 398 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
 ; ============================================================
 

coreclr_tests.run.windows.x86.checked.mch

-22 (-20.18%) : 505330.dasm - TestclassarrInnerProd.ArrayClass:.ctor(int):this (FullOpts)

@@ -11,24 +11,18 @@
 ;  V00 this         [V00,T01] (  4,  4   )     ref  ->  edi         this class-hnd single-def <Test_classarr_InnerProd.ArrayClass>
 ;  V01 arg1         [V01,T00] (  7,  7   )     int  ->  esi         single-def
 ;  V02 tmp0         [V02    ] (  7,  7   )  struct (12) [esp+0x00]  do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-;  TEMP_01                                   byref  ->  [esp+0x0C]
 ;
-; Lcl frame size = 16
+; Lcl frame size = 12
 
 G_M23325_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     edi
        push     esi
-       sub      esp, 16
-       xor      eax, eax
-       mov      dword ptr [esp+0x0C], eax
+       sub      esp, 12
        mov      edi, ecx
        ; gcrRegs +[edi]
        mov      esi, edx
-                       ;; size=15 bbWeight=1 PerfScore 4.00
+                       ;; size=9 bbWeight=1 PerfScore 2.75
 G_M23325_IG02:        ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       lea      edx, bword ptr [edi+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [esp+0x0C], edx
        mov      dword ptr [esp], esi
        mov      dword ptr [esp+0x04], esi
        lea      ecx, [esp]
@@ -36,18 +30,14 @@ G_M23325_IG02:        ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000
        ; npt arg push 0
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        mov      edx, 2
-       ; byrRegs -[edx]
        call     CORINFO_HELP_NEW_MDARR
        ; gcrRegs +[eax]
        ; gcr arg pop 1
-       mov      edx, bword ptr [esp+0x0C]
+       lea      edx, bword ptr [edi+0x04]
        ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
-       lea      edx, bword ptr [edi+0x08]
-       ; byrRegs +[edx]
-       mov      bword ptr [esp+0x0C], edx
        mov      dword ptr [esp], esi
        mov      dword ptr [esp+0x04], esi
        mov      dword ptr [esp+0x08], esi
@@ -56,23 +46,22 @@ G_M23325_IG02:        ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000
        ; npt arg push 0
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        mov      edx, 3
-       ; byrRegs -[edx]
        call     CORINFO_HELP_NEW_MDARR
-       ; gcrRegs -[edi] +[eax]
+       ; gcrRegs +[eax]
        ; gcr arg pop 1
-       mov      edx, bword ptr [esp+0x0C]
+       lea      edx, bword ptr [edi+0x08]
        ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_EAX
-       ; gcrRegs -[eax]
+       ; gcrRegs -[eax edi]
        ; byrRegs -[edx]
-                       ;; size=88 bbWeight=1 PerfScore 18.00
+                       ;; size=72 bbWeight=1 PerfScore 14.00
 G_M23325_IG03:        ; bbWeight=1, epilog, nogc, extend
-       add      esp, 16
+       add      esp, 12
        pop      esi
        pop      edi
        ret      
                        ;; size=6 bbWeight=1 PerfScore 2.25
 
-; Total bytes of code 109, prolog size 11, PerfScore 24.25, instruction count 34, allocated bytes for code 109 (MethodHash=91efa4e2) for method Test_classarr_InnerProd.ArrayClass:.ctor(int):this (FullOpts)
+; Total bytes of code 87, prolog size 5, PerfScore 19.00, instruction count 28, allocated bytes for code 87 (MethodHash=91efa4e2) for method Test_classarr_InnerProd.ArrayClass:.ctor(int):this (FullOpts)
 ; ============================================================
 

-14 (-19.18%) : 509850.dasm - Test10w5d.testout1+CL01155:.ctor():this (FullOpts)

@@ -10,22 +10,16 @@
 ;
 ;  V00 this         [V00,T00] (  4,  4   )     ref  ->  esi         this class-hnd single-def <Test_10w5d.testout1+CL_0_1_1_5_5>
 ;  V01 tmp0         [V01    ] (  3,  3   )  struct ( 8) [esp+0x00]  do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-;  TEMP_01                                   byref  ->  [esp+0x08]
 ;
-; Lcl frame size = 12
+; Lcl frame size = 8
 
 G_M48731_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     esi
-       sub      esp, 12
-       xor      eax, eax
-       mov      dword ptr [esp+0x08], eax
+       sub      esp, 8
        mov      esi, ecx
        ; gcrRegs +[esi]
-                       ;; size=12 bbWeight=1 PerfScore 2.75
+                       ;; size=6 bbWeight=1 PerfScore 1.50
 G_M48731_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
-       lea      edx, bword ptr [esi+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [esp+0x08], edx
        mov      dword ptr [esp], 3
        mov      dword ptr [esp+0x04], 11
        lea      ecx, [esp]
@@ -33,23 +27,22 @@ G_M48731_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; npt arg push 0
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        mov      edx, 2
-       ; byrRegs -[edx]
        call     CORINFO_HELP_NEW_MDARR
        ; gcrRegs +[eax]
        ; gcr arg pop 1
-       mov      edx, bword ptr [esp+0x08]
+       lea      edx, bword ptr [esi+0x04]
        ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
        mov      word  ptr [esi+0x08], 0x747C
-                       ;; size=56 bbWeight=1 PerfScore 9.50
+                       ;; size=48 bbWeight=1 PerfScore 7.50
 G_M48731_IG03:        ; bbWeight=1, epilog, nogc, extend
-       add      esp, 12
+       add      esp, 8
        pop      esi
        ret      
                        ;; size=5 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 73, prolog size 10, PerfScore 14.00, instruction count 20, allocated bytes for code 73 (MethodHash=9ef941a4) for method Test_10w5d.testout1+CL_0_1_1_5_5:.ctor():this (FullOpts)
+; Total bytes of code 59, prolog size 4, PerfScore 10.75, instruction count 16, allocated bytes for code 59 (MethodHash=9ef941a4) for method Test_10w5d.testout1+CL_0_1_1_5_5:.ctor():this (FullOpts)
 ; ============================================================
 

-14 (-19.18%) : 503015.dasm - Test10w5d.testout1+CL05135:.ctor():this (FullOpts)

@@ -10,22 +10,16 @@
 ;
 ;  V00 this         [V00,T00] (  4,  4   )     ref  ->  esi         this class-hnd single-def <Test_10w5d.testout1+CL_0_5_1_3_5>
 ;  V01 tmp0         [V01    ] (  3,  3   )  struct ( 8) [esp+0x00]  do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
-;  TEMP_01                                   byref  ->  [esp+0x08]
 ;
-; Lcl frame size = 12
+; Lcl frame size = 8
 
 G_M22041_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     esi
-       sub      esp, 12
-       xor      eax, eax
-       mov      dword ptr [esp+0x08], eax
+       sub      esp, 8
        mov      esi, ecx
        ; gcrRegs +[esi]
-                       ;; size=12 bbWeight=1 PerfScore 2.75
+                       ;; size=6 bbWeight=1 PerfScore 1.50
 G_M22041_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
-       lea      edx, bword ptr [esi+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [esp+0x08], edx
        mov      dword ptr [esp], 3
        mov      dword ptr [esp+0x04], 11
        lea      ecx, [esp]
@@ -33,23 +27,22 @@ G_M22041_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; npt arg push 0
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        mov      edx, 2
-       ; byrRegs -[edx]
        call     CORINFO_HELP_NEW_MDARR
        ; gcrRegs +[eax]
        ; gcr arg pop 1
-       mov      edx, bword ptr [esp+0x08]
+       lea      edx, bword ptr [esi+0x04]
        ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
        mov      word  ptr [esi+0x08], 0x11AD
-                       ;; size=56 bbWeight=1 PerfScore 9.50
+                       ;; size=48 bbWeight=1 PerfScore 7.50
 G_M22041_IG03:        ; bbWeight=1, epilog, nogc, extend
-       add      esp, 12
+       add      esp, 8
        pop      esi
        ret      
                        ;; size=5 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 73, prolog size 10, PerfScore 14.00, instruction count 20, allocated bytes for code 73 (MethodHash=f0d2a9e6) for method Test_10w5d.testout1+CL_0_5_1_3_5:.ctor():this (FullOpts)
+; Total bytes of code 59, prolog size 4, PerfScore 10.75, instruction count 16, allocated bytes for code 59 (MethodHash=f0d2a9e6) for method Test_10w5d.testout1+CL_0_5_1_3_5:.ctor():this (FullOpts)
 ; ============================================================
 

+5 (+3.38%) : 372509.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.StringImportSignature:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Instrumented Tier0)

@@ -14,26 +14,27 @@
 ;  V06 tmp2         [V06    ] (  1,  1   )     ref  ->  [ebp-0x24]  do-not-enreg[] must-init "argument with side effect"
 ;  V07 tmp3         [V07    ] (  1,  1   )     ref  ->  [ebp-0x28]  do-not-enreg[] must-init "argument with side effect"
 ;  V08 tmp4         [V08    ] (  1,  1   )     ref  ->  [ebp-0x2C]  do-not-enreg[] must-init "argument with side effect"
-;  V09 tmp5         [V09    ] (  1,  1   )     ref  ->  [ebp-0x30]  do-not-enreg[] must-init "argument with side effect"
 ;
-; Lcl frame size = 40
+; Lcl frame size = 36
 
 G_M44208_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
        push     edi
        push     esi
-       sub      esp, 40
+       sub      esp, 36
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [ebp-0x30], ymm4
+       vmovdqu  xmmword ptr [ebp-0x2C], xmm4
+       xor      eax, eax
+       mov      dword ptr [ebp-0x1C], eax
+       mov      dword ptr [ebp-0x18], eax
+       mov      dword ptr [ebp-0x14], eax
        mov      gword ptr [ebp-0x0C], ecx
        mov      gword ptr [ebp-0x10], edx
-                       ;; size=23 bbWeight=1 PerfScore 7.83
+                       ;; size=34 bbWeight=1 PerfScore 11.08
 G_M44208_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       mov      ecx, gword ptr [ebp+0x08]
-       ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x28], ecx
        mov      ecx, gword ptr [ebp-0x10]
+       ; gcrRegs +[ecx]
        mov      gword ptr [ebp-0x1C], ecx
        mov      ecx, gword ptr [ebp-0x1C]
        mov      edx, 0xD1FFAB1E
@@ -53,7 +54,7 @@ G_M44208_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      gword ptr [ebp-0x24], eax
        mov      edx, gword ptr [ebp-0x24]
        ; gcrRegs +[edx]
-       mov      ecx, gword ptr [ebp-0x28]
+       mov      ecx, gword ptr [ebp+0x08]
        ; gcrRegs +[ecx]
        cmp      dword ptr [ecx], ecx
        call     [<unknown method>]
@@ -70,22 +71,22 @@ G_M44208_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        lea      ecx, [ebp-0x18]
        call     [<unknown method>]
        ; byrRegs -[esi edi]
-       mov      gword ptr [ebp-0x2C], eax
-       mov      edx, gword ptr [ebp-0x2C]
+       mov      gword ptr [ebp-0x28], eax
+       mov      edx, gword ptr [ebp-0x28]
        ; gcrRegs +[edx]
        mov      ecx, 0xD1FFAB1E
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
-       mov      gword ptr [ebp-0x30], eax
-       mov      edx, gword ptr [ebp-0x30]
+       mov      gword ptr [ebp-0x2C], eax
+       mov      edx, gword ptr [ebp-0x2C]
        ; gcrRegs +[edx]
        mov      ecx, gword ptr [ebp+0x08]
        ; gcrRegs +[ecx]
        cmp      dword ptr [ecx], ecx
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
-                       ;; size=116 bbWeight=1 PerfScore 47.75
+                       ;; size=110 bbWeight=1 PerfScore 45.75
 G_M44208_IG03:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x08]
        pop      esi
@@ -94,6 +95,6 @@ G_M44208_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      4
                        ;; size=9 bbWeight=1 PerfScore 4.00
 
-; Total bytes of code 148, prolog size 17, PerfScore 59.58, instruction count 49, allocated bytes for code 148 (MethodHash=64ed534f) for method ILCompiler.DependencyAnalysis.ReadyToRun.StringImportSignature:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Instrumented Tier0)
+; Total bytes of code 153, prolog size 28, PerfScore 60.83, instruction count 51, allocated bytes for code 153 (MethodHash=64ed534f) for method ILCompiler.DependencyAnalysis.ReadyToRun.StringImportSignature:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Instrumented Tier0)
 ; ============================================================
 

+5 (+3.55%) : 364931.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<>cDisplayClass10_0:gValidateTypeWorkerHelper|0(Internal.TypeSystem.TypeDesc):System.Threading.Tasks.Task`1[ubyte]:this (Instrumented Tier0)

@@ -14,19 +14,22 @@
 ;  V06 tmp3         [V06    ] (  1,  1   )     ref  ->  [ebp-0x1C]  do-not-enreg[] must-init "argument with side effect"
 ;  V07 tmp4         [V07    ] (  1,  1   )     ref  ->  [ebp-0x20]  do-not-enreg[] must-init "argument with side effect"
 ;  V08 tmp5         [V08    ] (  1,  1   )     ref  ->  [ebp-0x24]  do-not-enreg[] must-init "argument with side effect"
-;  V09 tmp6         [V09    ] (  1,  1   )     ref  ->  [ebp-0x28]  do-not-enreg[] must-init "argument with side effect"
 ;
-; Lcl frame size = 40
+; Lcl frame size = 36
 
 G_M60667_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 40
+       sub      esp, 36
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [ebp-0x28], ymm4
+       vmovdqu  xmmword ptr [ebp-0x24], xmm4
+       xor      eax, eax
+       mov      dword ptr [ebp-0x14], eax
+       mov      dword ptr [ebp-0x10], eax
+       mov      dword ptr [ebp-0x0C], eax
        mov      gword ptr [ebp-0x04], ecx
        mov      gword ptr [ebp-0x08], edx
-                       ;; size=21 bbWeight=1 PerfScore 5.83
+                       ;; size=32 bbWeight=1 PerfScore 9.08
 G_M60667_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      ecx, gword ptr [ebp-0x04]
        ; gcrRegs +[ecx]
@@ -50,10 +53,8 @@ G_M60667_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      gword ptr [ebp-0x10], eax
        xor      ecx, ecx
        mov      gword ptr [ebp-0x0C], ecx
-       mov      ecx, gword ptr [ebp-0x04]
-       ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x28], ecx
        mov      ecx, gword ptr [ebp-0x08]
+       ; gcrRegs +[ecx]
        mov      gword ptr [ebp-0x18], ecx
        mov      ecx, gword ptr [ebp-0x18]
        mov      edx, 0xD1FFAB1E
@@ -75,17 +76,17 @@ G_M60667_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      gword ptr [ebp-0x24], eax
        mov      edx, gword ptr [ebp-0x24]
        ; gcrRegs +[edx]
-       mov      ecx, gword ptr [ebp-0x28]
+       mov      ecx, gword ptr [ebp-0x04]
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
-                       ;; size=116 bbWeight=1 PerfScore 44.75
+                       ;; size=110 bbWeight=1 PerfScore 42.75
 G_M60667_IG03:        ; bbWeight=1, epilog, nogc, extend
        mov      esp, ebp
        pop      ebp
        ret      
                        ;; size=4 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 141, prolog size 15, PerfScore 52.33, instruction count 46, allocated bytes for code 141 (MethodHash=4ed91304) for method ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<>c__DisplayClass10_0:<ValidateTypeWorker>g__ValidateTypeWorkerHelper|0(Internal.TypeSystem.TypeDesc):System.Threading.Tasks.Task`1[ubyte]:this (Instrumented Tier0)
+; Total bytes of code 146, prolog size 26, PerfScore 53.58, instruction count 48, allocated bytes for code 146 (MethodHash=4ed91304) for method ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<>c__DisplayClass10_0:<ValidateTypeWorker>g__ValidateTypeWorkerHelper|0(Internal.TypeSystem.TypeDesc):System.Threading.Tasks.Task`1[ubyte]:this (Instrumented Tier0)
 ; ============================================================
 

+6 (+7.41%) : 517132.dasm - Runtime_88091:IsSubsetOf(System.Collections.Generic.List`1[NamedSet],int,int):ubyte (FullOpts)

@@ -10,17 +10,16 @@
 ;
 ;  V00 arg0         [V00,T01] (  4,  4   )     ref  ->  ecx         class-hnd single-def <System.Collections.Generic.List`1[NamedSet]>
 ;  V01 arg1         [V01,T00] (  5,  5   )     int  ->  edx         single-def
-;  V02 arg2         [V02,T08] (  3,  3   )     int  ->  eax         single-def
-;  V03 tmp0         [V03,T03] (  2,  4   )     ref  ->  edx         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V02 arg2         [V02,T07] (  3,  3   )     int  ->  eax         single-def
+;  V03 tmp0         [V03,T03] (  2,  4   )     ref  ->  [ebp-0x10]  class-hnd spill-single-def "impAppendStmt" <<unknown class>>
 ;  V04 tmp1         [V04,T02] (  3,  6   )     ref  ->  edi         single-def "arr expr"
 ;  V05 tmp2         [V05,T04] (  2,  4   )     ref  ->  ecx         single-def "arr expr"
-;  V06 tmp3         [V06,T05] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
-;  V07 tmp4         [V07,T06] (  2,  4   )     ref  ->  eax         single-def "argument with side effect"
-;  V08 cse0         [V08,T09] (  3,  3   )     int  ->  esi         "CSE - moderate"
-;  V09 cse1         [V09,T07] (  3,  3   )     ref  ->  ecx         "CSE - moderate"
-;  V10 cse2         [V10,T10] (  3,  3   )     int  ->  ebx         "CSE - moderate"
+;  V06 tmp3         [V06,T05] (  2,  4   )     ref  ->  ecx         single-def "argument with side effect"
+;  V07 cse0         [V07,T08] (  3,  3   )     int  ->  esi         "CSE - moderate"
+;  V08 cse1         [V08,T06] (  3,  3   )     ref  ->  ecx         "CSE - moderate"
+;  V09 cse2         [V09,T09] (  3,  3   )     int  ->  ebx         "CSE - moderate"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 4
 
 G_M20577_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -28,8 +27,9 @@ G_M20577_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
+       push     eax
        mov      eax, dword ptr [ebp+0x08]
-                       ;; size=9 bbWeight=1 PerfScore 5.25
+                       ;; size=10 bbWeight=1 PerfScore 6.25
 G_M20577_IG02:        ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[ecx]
        mov      esi, dword ptr [ecx+0x08]
@@ -44,26 +44,29 @@ G_M20577_IG02:        ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
        mov      edx, gword ptr [edi+4*edx+0x08]
        ; gcrRegs +[edx]
        mov      edx, gword ptr [edx+0x04]
+       mov      gword ptr [ebp-0x10], edx
+       ; GC ptr vars +{V03}
        cmp      eax, esi
        jae      SHORT G_M20577_IG05
        cmp      eax, ebx
        jae      SHORT G_M20577_IG04
        mov      ecx, gword ptr [ecx+4*eax+0x08]
-       mov      eax, gword ptr [ecx+0x04]
-       ; gcrRegs +[eax]
-       mov      ecx, edx
-       mov      edx, eax
+       mov      ecx, gword ptr [ecx+0x04]
+       mov      edx, ecx
+       mov      ecx, gword ptr [ebp-0x10]
        cmp      dword ptr [ecx], ecx
+       ; GC ptr vars -{V03}
        call     [System.Collections.Generic.HashSet`1[System.__Canon]:IsSubsetOf(System.Collections.Generic.IEnumerable`1[System.__Canon]):ubyte:this]
-       ; gcrRegs -[eax ecx edx edi]
-                       ;; size=53 bbWeight=1 PerfScore 25.75
+       ; gcrRegs -[ecx edx edi]
+                       ;; size=57 bbWeight=1 PerfScore 27.50
 G_M20577_IG03:        ; bbWeight=1, epilog, nogc, extend
+       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      4
-                       ;; size=7 bbWeight=1 PerfScore 4.00
+                       ;; size=8 bbWeight=1 PerfScore 4.50
 G_M20577_IG04:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        call     CORINFO_HELP_RNGCHKFAIL
                        ;; size=5 bbWeight=0 PerfScore 0.00
@@ -72,6 +75,6 @@ G_M20577_IG05:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 81, prolog size 6, PerfScore 35.00, instruction count 34, allocated bytes for code 81 (MethodHash=dd89af9e) for method Runtime_88091:IsSubsetOf(System.Collections.Generic.List`1[NamedSet],int,int):ubyte (FullOpts)
+; Total bytes of code 87, prolog size 7, PerfScore 38.25, instruction count 37, allocated bytes for code 87 (MethodHash=dd89af9e) for method Runtime_88091:IsSubsetOf(System.Collections.Generic.List`1[NamedSet],int,int):ubyte (FullOpts)
 ; ============================================================
 

libraries.crossgen2.windows.x86.checked.mch

-48 (-23.76%) : 149280.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)

@@ -9,22 +9,20 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] (  8, 12   )     ref  ->  esi         this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
+;  V00 this         [V00,T05] (  8, 12   )     ref  ->  esi         this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
 ;* V01 arg1         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Xml.Xsl.XsltContext>
-;  V02 arg2         [V02,T08] (  7, 11   )     ref  ->  [ebp+0x0C]  class-hnd single-def <System.Object[]>
+;  V02 arg2         [V02,T06] (  8, 11.04)     ref  ->  edi         class-hnd single-def <System.Object[]>
 ;* V03 arg3         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Xml.XPath.XPathNavigator>
-;  V04 loc0         [V04,T03] ( 11, 19   )     int  ->  ebx        
+;  V04 loc0         [V04,T00] ( 22, 39.04)     int  ->  ebx        
 ;* V05 tmp0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;  V06 tmp1         [V06,T01] (  6, 24   )     ref  ->  eax         "arr expr"
-;  V07 tmp2         [V07,T02] (  6, 24   )     ref  ->  edi         "arr expr"
-;  V08 tmp3         [V08,T05] (  4, 16   )     ref  ->  ecx         "argument with side effect"
-;  V09 tmp4         [V09,T06] (  4, 16   )     int  ->  eax         "argument with side effect"
-;  V10 tmp5         [V10,T00] ( 15, 56.08)     int  ->  [ebp-0x10]  "argument with side effect"
-;  V11 tmp6         [V11,T04] (  5, 16.08)     ref  ->  eax         "argument with side effect"
-;  V12 tmp7         [V12,T09] (  2,  4   )     ref  ->  ecx         single-def "argument with side effect"
-;  V13 tmp8         [V13,T10] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
+;  V07 tmp2         [V07,T02] (  6, 24   )     ref  ->  eax         "arr expr"
+;  V08 tmp3         [V08,T03] (  4, 16   )     ref  ->  ecx         "argument with side effect"
+;  V09 tmp4         [V09,T04] (  4, 16   )     int  ->  edx         "argument with side effect"
+;  V10 tmp5         [V10,T07] (  2,  4   )     ref  ->  ecx         single-def "argument with side effect"
+;  V11 tmp6         [V11,T08] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M50779_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -32,86 +30,69 @@ G_M50779_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       push     eax
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, gword ptr [ebp+0x0C]
        ; gcrRegs +[edi]
-                       ;; size=12 bbWeight=1 PerfScore 6.50
+                       ;; size=11 bbWeight=1 PerfScore 5.50
 G_M50779_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ebx, dword ptr [edi+0x04]
        dec      ebx
-       js       G_M50779_IG06
+       js       SHORT G_M50779_IG06
        cmp      dword ptr [edi+0x04], ebx
        jle      SHORT G_M50779_IG05
-                       ;; size=15 bbWeight=1 PerfScore 7.25
+                       ;; size=11 bbWeight=1 PerfScore 7.25
 G_M50779_IG03:        ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp+0x0C], edi
-       mov      eax, edi
-       ; gcrRegs +[eax]
-       mov      edx, ebx
-       mov      ecx, gword ptr [eax+4*edx+0x08]
+       mov      ecx, gword ptr [edi+4*ebx+0x08]
        ; gcrRegs +[ecx]
        mov      eax, gword ptr [esi+0x04]
-       cmp      edx, dword ptr [eax+0x04]
-       jae      G_M50779_IG08
-       mov      eax, dword ptr [eax+4*edx+0x08]
-       ; gcrRegs -[eax]
-       mov      edi, gword ptr [esi+0x1C]
-       cmp      edx, dword ptr [edi+0x04]
-       jae      G_M50779_IG08
-       mov      dword ptr [ebp-0x10], edx
-       push     gword ptr [edi+4*edx+0x08]
-       mov      edx, eax
+       ; gcrRegs +[eax]
+       cmp      ebx, dword ptr [eax+0x04]
+       jae      SHORT G_M50779_IG08
+       mov      edx, dword ptr [eax+4*ebx+0x08]
+       mov      eax, gword ptr [esi+0x1C]
+       cmp      ebx, dword ptr [eax+0x04]
+       jae      SHORT G_M50779_IG08
+       push     gword ptr [eax+4*ebx+0x08]
        call     [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
-       ; gcrRegs -[ecx edi] +[eax]
+       ; gcrRegs -[ecx]
        push     eax
-       mov      edx, dword ptr [ebp-0x10]
-       mov      ecx, gword ptr [ebp+0x0C]
+       mov      edx, ebx
+       mov      ecx, edi
        ; gcrRegs +[ecx]
        call     [CORINFO_HELP_ARRADDR_ST]
        ; gcrRegs -[eax ecx]
        dec      ebx
-       mov      edi, gword ptr [ebp+0x0C]
-       ; gcrRegs +[edi]
        jns      SHORT G_M50779_IG03
-                       ;; size=73 bbWeight=3.96 PerfScore 126.72
+                       ;; size=48 bbWeight=3.96 PerfScore 105.93
 G_M50779_IG04:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        jmp      SHORT G_M50779_IG06
                        ;; size=2 bbWeight=1 PerfScore 2.00
 G_M50779_IG05:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp+0x0C], edi
-       mov      eax, edi
-       ; gcrRegs +[eax]
-       mov      edx, ebx
-       cmp      edx, dword ptr [eax+0x04]
+       cmp      ebx, dword ptr [edi+0x04]
        jae      SHORT G_M50779_IG08
-       mov      ecx, gword ptr [eax+4*edx+0x08]
+       mov      ecx, gword ptr [edi+4*ebx+0x08]
        ; gcrRegs +[ecx]
        mov      eax, gword ptr [esi+0x04]
-       cmp      edx, dword ptr [eax+0x04]
+       ; gcrRegs +[eax]
+       cmp      ebx, dword ptr [eax+0x04]
        jae      SHORT G_M50779_IG08
-       mov      eax, dword ptr [eax+4*edx+0x08]
-       ; gcrRegs -[eax]
-       mov      edi, gword ptr [esi+0x1C]
-       cmp      edx, dword ptr [edi+0x04]
+       mov      edx, dword ptr [eax+4*ebx+0x08]
+       mov      eax, gword ptr [esi+0x1C]
+       cmp      ebx, dword ptr [eax+0x04]
        jae      SHORT G_M50779_IG08
-       mov      dword ptr [ebp-0x10], edx
-       push     gword ptr [edi+4*edx+0x08]
-       mov      edx, eax
+       push     gword ptr [eax+4*ebx+0x08]
        call     [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
-       ; gcrRegs -[ecx edi] +[eax]
+       ; gcrRegs -[ecx]
        push     eax
-       mov      edx, dword ptr [ebp-0x10]
-       mov      ecx, gword ptr [ebp+0x0C]
+       mov      edx, ebx
+       mov      ecx, edi
        ; gcrRegs +[ecx]
        call     [CORINFO_HELP_ARRADDR_ST]
        ; gcrRegs -[eax ecx]
        dec      ebx
-       mov      edi, gword ptr [ebp+0x0C]
-       ; gcrRegs +[edi]
        jns      SHORT G_M50779_IG05
-                       ;; size=70 bbWeight=0.04 PerfScore 1.44
+                       ;; size=53 bbWeight=0.04 PerfScore 1.23
 G_M50779_IG06:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        mov      ecx, gword ptr [esi+0x18]
        ; gcrRegs +[ecx]
@@ -123,19 +104,18 @@ G_M50779_IG06:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
        ; gcrRegs -[ecx edx esi edi] +[eax]
                        ;; size=15 bbWeight=1 PerfScore 11.00
 G_M50779_IG07:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      8
-                       ;; size=8 bbWeight=1 PerfScore 4.50
+                       ;; size=7 bbWeight=1 PerfScore 4.00
 G_M50779_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[eax]
        call     [CORINFO_HELP_RNGCHKFAIL]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 202, prolog size 7, PerfScore 159.41, instruction count 73, allocated bytes for code 202 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
+; Total bytes of code 154, prolog size 6, PerfScore 136.91, instruction count 59, allocated bytes for code 154 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
 ; ============================================================
 

-13 (-19.12%) : 226882.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)

@@ -12,27 +12,20 @@
 ;* V00 loc0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol>
 ;  V01 tmp0         [V01,T00] (  4,  8   )     ref  ->  esi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol>
 ;  V02 tmp1         [V02,T01] (  3,  6   )     ref  ->  edx         single-def "arr expr"
-;  TEMP_01                                   byref  ->  [esp+0x00]
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M38638_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     esi
-       push     eax
-       xor      eax, eax
-       mov      dword ptr [esp], eax
-                       ;; size=7 bbWeight=1 PerfScore 3.25
+                       ;; size=1 bbWeight=1 PerfScore 1.00
 G_M38638_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[eax]
        mov      esi, eax
        ; gcrRegs +[esi]
-       lea      edx, bword ptr [esi+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [esp], edx
        call     [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
        ; gcrRegs -[eax]
-       ; byrRegs -[edx] +[eax]
+       ; byrRegs +[eax]
        ; gcr arg pop 0
        mov      edx, gword ptr [eax+0x60]
        ; gcrRegs +[edx]
@@ -41,7 +34,7 @@ G_M38638_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      eax, gword ptr [edx+0x1A4]
        ; gcrRegs +[eax]
        ; byrRegs -[eax]
-       mov      edx, bword ptr [esp]
+       lea      edx, bword ptr [esi+0x04]
        ; gcrRegs -[edx]
        ; byrRegs +[edx]
        call     [CORINFO_HELP_ASSIGN_REF_EAX]
@@ -51,18 +44,17 @@ G_M38638_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      dword ptr [esi+0x14], eax
        mov      eax, esi
        ; gcrRegs +[eax]
-                       ;; size=51 bbWeight=1 PerfScore 21.25
+                       ;; size=45 bbWeight=1 PerfScore 19.25
 G_M38638_IG03:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
        pop      esi
        ret      
-                       ;; size=3 bbWeight=1 PerfScore 2.00
+                       ;; size=2 bbWeight=1 PerfScore 1.50
 G_M38638_IG04:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[eax esi]
        call     [CORINFO_HELP_RNGCHKFAIL]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 68, prolog size 7, PerfScore 26.50, instruction count 23, allocated bytes for code 71 (MethodHash=64d56911) for method Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
+; Total bytes of code 55, prolog size 1, PerfScore 21.75, instruction count 17, allocated bytes for code 55 (MethodHash=64d56911) for method Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
 ; ============================================================
 

-8 (-15.69%) : 30542.dasm - System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)

@@ -8,46 +8,41 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  3,  3   )     ref  ->  [esp+0x00]  this class-hnd single-def <System.Data.Common.SqlBinaryStorage>
+;  V00 this         [V00,T03] (  3,  3   )     ref  ->  edi         this class-hnd single-def <System.Data.Common.SqlBinaryStorage>
 ;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  esi         single-def
 ;  V02 tmp0         [V02,T01] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "Single-def Box Helper" <System.Data.SqlTypes.SqlBinary>
 ;  V03 tmp1         [V03,T02] (  3,  6   )     ref  ->  ecx         single-def "arr expr"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M2130_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     edi
        push     esi
-       push     ebx
-       push     eax
-       mov      gword ptr [esp], ecx
-       ; GC ptr vars +{V00}
+       mov      edi, ecx
+       ; gcrRegs +[edi]
        mov      esi, edx
-                       ;; size=9 bbWeight=1 PerfScore 5.25
-G_M2130_IG02:        ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+                       ;; size=6 bbWeight=1 PerfScore 2.50
+G_M2130_IG02:        ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[eax]
-       lea      edi, bword ptr [eax+0x04]
-       ; byrRegs +[edi]
-       mov      ebx, gword ptr [esp]
-       ; gcrRegs +[ebx]
-       mov      ecx, gword ptr [ebx+0x24]
+       ; gcr arg pop 0
+       mov      ecx, gword ptr [edi+0x24]
        ; gcrRegs +[ecx]
        cmp      esi, dword ptr [ecx+0x04]
        jae      SHORT G_M2130_IG04
        lea      esi, bword ptr [ecx+4*esi+0x08]
        ; byrRegs +[esi]
-       ; GC ptr vars -{V00}
+       lea      edi, bword ptr [eax+0x04]
+       ; gcrRegs -[edi]
+       ; byrRegs +[edi]
        call     [CORINFO_HELP_ASSIGN_BYREF]
-       ; gcrRegs -[ecx ebx]
-                       ;; size=30 bbWeight=1 PerfScore 14.50
+       ; gcrRegs -[ecx]
+                       ;; size=27 bbWeight=1 PerfScore 13.50
 G_M2130_IG03:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
-       pop      ebx
        pop      esi
        pop      edi
        ret      
-                       ;; size=5 bbWeight=1 PerfScore 3.00
+                       ;; size=3 bbWeight=1 PerfScore 2.00
 G_M2130_IG04:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[eax]
        ; byrRegs -[esi edi]
@@ -55,6 +50,6 @@ G_M2130_IG04:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 51, prolog size 4, PerfScore 22.75, instruction count 21, allocated bytes for code 51 (MethodHash=63a8f7ad) for method System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
+; Total bytes of code 43, prolog size 2, PerfScore 18.00, instruction count 16, allocated bytes for code 43 (MethodHash=63a8f7ad) for method System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
 ; ============================================================
 

+30 (+4.54%) : 178406.dasm - System.IO.Packaging.PartBasedPackageProperties:SerializeDirtyProperties():this (FullOpts)

@@ -15,14 +15,14 @@
 ;  V03 loc2         [V03,T08] (  5, 18   )     int  ->  [ebp-0x44]  spill-single-def
 ;  V04 loc3         [V04    ] (  2,  4   )  struct (12) [ebp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Nullable`1[System.DateTime]>
 ;  V05 loc4         [V05    ] (  2,  4   )  struct ( 8) [ebp-0x58]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.DateTime>
-;  V06 tmp0         [V06,T09] (  2, 16   )     ref  ->  [ebp-0x70]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
-;  V07 tmp1         [V07,T10] (  2, 16   )     ref  ->  [ebp-0x74]  class-hnd spill-single-def "impAppendStmt" <System.String>
+;  V06 tmp0         [V06,T09] (  2, 16   )     ref  ->  [ebp-0x6C]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
+;  V07 tmp1         [V07,T10] (  2, 16   )     ref  ->  [ebp-0x70]  class-hnd spill-single-def "impAppendStmt" <System.String>
 ;* V08 tmp2         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <<unknown class>>
-;  V09 tmp3         [V09,T17] (  2,  8   )     ref  ->  edi         class-hnd "non-inline candidate call" <<unknown class>>
+;  V09 tmp3         [V09,T15] (  2,  8   )     ref  ->  [ebp-0x74]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
 ;  V10 tmp4         [V10    ] (  2,  8   )  struct ( 8) [ebp-0x60]  do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.DateTime>
-;  V11 tmp5         [V11,T18] (  2,  8   )     ref  ->  edi         class-hnd "impAppendStmt" <<unknown class>>
-;  V12 tmp6         [V12,T19] (  2,  8   )     ref  ->  [ebp-0x78]  class-hnd spill-single-def "impAppendStmt" <System.String>
-;  V13 tmp7         [V13,T20] (  2,  8   )     ref  ->  [ebp-0x7C]  class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+;  V11 tmp5         [V11,T16] (  2,  8   )     ref  ->  [ebp-0x78]  class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+;  V12 tmp6         [V12,T17] (  2,  8   )     ref  ->  [ebp-0x7C]  class-hnd spill-single-def "impAppendStmt" <System.String>
+;  V13 tmp7         [V13,T18] (  2,  8   )     ref  ->  [ebp-0x80]  class-hnd spill-single-def "impAppendStmt" <<unknown class>>
 ;  V14 tmp8         [V14,T00] (  4, 32   )     int  ->  [ebp-0x64]  spill-single-def "Inlining Arg"
 ;* V15 tmp9         [V15    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V16 tmp10        [V16,T01] (  4, 32   )     int  ->  [ebp-0x68]  spill-single-def "Inlining Arg"
@@ -34,29 +34,23 @@
 ;  V22 tmp16        [V22    ] (  6, 20   )     ref  ->  [ebp-0x40]  do-not-enreg[X] addr-exposed "field V02.value (fldOffset=0x0)" P-DEP
 ;  V23 tmp17        [V23    ] (  6, 20   )     int  ->  [ebp-0x3C]  do-not-enreg[X] addr-exposed "field V02.key (fldOffset=0x4)" P-DEP
 ;  V24 tmp18        [V24    ] (  2,  4   )    long  ->  [ebp-0x58]  do-not-enreg[X] addr-exposed "field V05._dateData (fldOffset=0x0)" P-DEP
-;  V25 tmp19        [V25,T28] (  2,  8   )    long  ->  [ebp-0x60]  do-not-enreg[H] hidden-struct-arg "field V10._dateData (fldOffset=0x0)" P-DEP
+;  V25 tmp19        [V25,T22] (  2,  8   )    long  ->  [ebp-0x60]  do-not-enreg[H] hidden-struct-arg "field V10._dateData (fldOffset=0x0)" P-DEP
 ;  V26 tmp20        [V26,T03] (  3, 24   )     ref  ->  ecx         "arr expr"
 ;  V27 tmp21        [V27,T04] (  3, 24   )     ref  ->  ecx         "arr expr"
-;  V28 tmp22        [V28,T05] (  3, 24   )     ref  ->  edi         "arr expr"
-;  V29 tmp23        [V29,T11] (  2, 16   )     ref  ->  edx         "argument with side effect"
-;  V30 tmp24        [V30,T12] (  2, 16   )     ref  ->  ecx         "argument with side effect"
-;  V31 tmp25        [V31,T21] (  2,  8   )     ref  ->  edx         "argument with side effect"
-;  V32 tmp26        [V32,T22] (  2,  8   )     ref  ->  edi         "argument with side effect"
-;  V33 tmp27        [V33,T13] (  3, 12   )     ref  ->  ecx         "arr expr"
-;  V34 tmp28        [V34,T14] (  3, 12   )     ref  ->  eax         "arr expr"
-;  V35 tmp29        [V35,T23] (  2,  8   )     ref  ->  edx         "argument with side effect"
-;  V36 tmp30        [V36,T24] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V37 tmp31        [V37,T15] (  3, 12   )     ref  ->  eax         "arr expr"
-;  V38 tmp32        [V38,T25] (  2,  8   )     ref  ->  edx         "argument with side effect"
-;  V39 tmp33        [V39,T26] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V40 tmp34        [V40,T27] (  2,  8   )     ref  ->  edx         "argument with side effect"
-;  V41 EHSlots      [V41    ] (  1,  1   )  struct (16) [ebp-0x20]  do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-;* V42 cse0         [V42,T29] (  0,  0   )   byref  ->  zero-ref    "CSE - moderate"
-;  V43 cse1         [V43,T06] (  7, 22   )   byref  ->  [ebp-0x80]  spill-single-def "CSE - moderate"
-;  V44 cse2         [V44,T07] (  6, 20   )     int  ->  ebx         "CSE - moderate"
-;  V45 cse3         [V45,T16] (  7, 11   )     int  ->  [ebp-0x6C]  multi-def "CSE - moderate"
+;  V28 tmp22        [V28,T05] (  3, 24   )     ref  ->  edx         "arr expr"
+;  V29 tmp23        [V29,T19] (  2,  8   )     ref  ->  edx         "argument with side effect"
+;  V30 tmp24        [V30,T20] (  2,  8   )     ref  ->  [ebp-0x84]  spill-single-def "argument with side effect"
+;  V31 tmp25        [V31,T11] (  3, 12   )     ref  ->  ecx         "arr expr"
+;  V32 tmp26        [V32,T12] (  3, 12   )     ref  ->  edx         "arr expr"
+;  V33 tmp27        [V33,T13] (  3, 12   )     ref  ->  edx         "arr expr"
+;  V34 tmp28        [V34,T21] (  2,  8   )     ref  ->  edx         "argument with side effect"
+;  V35 EHSlots      [V35    ] (  1,  1   )  struct (16) [ebp-0x20]  do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
+;* V36 cse0         [V36,T23] (  0,  0   )   byref  ->  zero-ref    "CSE - moderate"
+;  V37 cse1         [V37,T06] (  7, 22   )   byref  ->  [ebp-0x88]  spill-single-def "CSE - moderate"
+;  V38 cse2         [V38,T07] (  6, 20   )     int  ->  ebx         "CSE - moderate"
+;  V39 cse3         [V39,T14] (  7, 11   )     int  ->  edi         multi-def "CSE - moderate"
 ;
-; Lcl frame size = 116
+; Lcl frame size = 124
 
 G_M56215_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -64,7 +58,7 @@ G_M56215_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 116
+       sub      esp, 124
        xorps    xmm4, xmm4
        movups   xmmword ptr [ebp-0x58], xmm4
        movups   xmmword ptr [ebp-0x48], xmm4
@@ -93,7 +87,6 @@ G_M56215_IG03:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        je       G_M56215_IG12
                        ;; size=25 bbWeight=1 PerfScore 7.00
 G_M56215_IG04:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
-       mov      dword ptr [ebp-0x6C], edi
        push     edi
        lea      ecx, [ebp-0x38]
        lea      edx, [ebp-0x40]
@@ -110,8 +103,8 @@ G_M56215_IG04:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; byrRegs -[eax]
        call     [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
        ; byrRegs +[eax]
-       mov      bword ptr [ebp-0x80], eax
-       ; GC ptr vars +{V43}
+       mov      bword ptr [ebp-0x88], eax
+       ; GC ptr vars +{V37}
        mov      ecx, gword ptr [eax+0x1C]
        ; gcrRegs +[ecx]
        mov      edx, dword ptr [ebp-0x64]
@@ -121,7 +114,7 @@ G_M56215_IG04:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      edx, dword ptr [ecx+4*edx+0x10]
        mov      dword ptr [ebp-0x44], edx
        mov      ecx, gword ptr [esi+0x0C]
-       mov      gword ptr [ebp-0x70], ecx
+       mov      gword ptr [ebp-0x6C], ecx
        ; GC ptr vars +{V06}
        lea      ecx, [ebp-0x40]
        ; gcrRegs -[ecx]
@@ -131,7 +124,7 @@ G_M56215_IG04:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      dword ptr [ebp-0x68], eax
        mov      ecx, eax
        call     [System.IO.Packaging.PackageXmlStringTable:CheckIdRange(int)]
-       mov      eax, bword ptr [ebp-0x80]
+       mov      eax, bword ptr [ebp-0x88]
        ; byrRegs +[eax]
        mov      ecx, gword ptr [eax+0x1C]
        ; gcrRegs +[ecx]
@@ -141,34 +134,33 @@ G_M56215_IG04:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        lea      edx, [edx+2*edx]
        mov      edx, gword ptr [ecx+4*edx+0x08]
        ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x74], edx
+       mov      gword ptr [ebp-0x70], edx
        ; GC ptr vars +{V07}
        mov      ecx, dword ptr [ebp-0x44]
        ; gcrRegs -[ecx]
        call     [System.IO.Packaging.PackageXmlStringTable:CheckIdRange(int)]
        ; gcrRegs -[edx]
        ; byrRegs -[eax]
-       mov      ecx, gword ptr [ebp-0x70]
-       ; gcrRegs +[ecx]
-       mov      edx, gword ptr [ebp-0x74]
-       ; gcrRegs +[edx]
-       mov      eax, bword ptr [ebp-0x80]
+       mov      eax, bword ptr [ebp-0x88]
        ; byrRegs +[eax]
-       mov      edi, gword ptr [eax+0x1C]
-       ; gcrRegs +[edi]
-       mov      eax, dword ptr [ebp-0x44]
-       ; byrRegs -[eax]
-       cmp      eax, dword ptr [edi+0x04]
+       mov      edx, gword ptr [eax+0x1C]
+       ; gcrRegs +[edx]
+       mov      ecx, dword ptr [ebp-0x44]
+       cmp      ecx, dword ptr [edx+0x04]
        jae      G_M56215_IG10
-       lea      eax, [eax+2*eax]
-       push     gword ptr [edi+4*eax+0x08]
+       lea      ecx, [ecx+2*ecx]
+       push     gword ptr [edx+4*ecx+0x08]
+       mov      edx, gword ptr [ebp-0x70]
+       mov      ecx, gword ptr [ebp-0x6C]
+       ; gcrRegs +[ecx]
        cmp      dword ptr [ecx], ecx
        ; GC ptr vars -{V06 V07}
        call     [<unknown method>]
-       ; gcrRegs -[ecx edx edi]
+       ; gcrRegs -[ecx edx]
+       ; byrRegs -[eax]
        lea      ecx, [ebp-0x40]
        mov      edx, ebx
-                       ;; size=194 bbWeight=4 PerfScore 320.00
+                       ;; size=200 bbWeight=4 PerfScore 316.00
 G_M56215_IG05:        ; bbWeight=4, extend
        call     [<unknown method>]
        ; gcrRegs +[eax]
@@ -183,11 +175,14 @@ G_M56215_IG06:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcrRegs -[eax]
        cmp      dword ptr [ebp-0x44], 6
        jne      G_M56215_IG07
-       mov      edi, gword ptr [esi+0x0C]
-       ; gcrRegs +[edi]
+       mov      eax, gword ptr [esi+0x0C]
+       ; gcrRegs +[eax]
+       mov      gword ptr [ebp-0x78], eax
+       ; GC ptr vars +{V11}
        mov      ecx, 10
        call     [System.IO.Packaging.PackageXmlStringTable:CheckIdRange(int)]
-       mov      eax, bword ptr [ebp-0x80]
+       ; gcrRegs -[eax]
+       mov      eax, bword ptr [ebp-0x88]
        ; byrRegs +[eax]
        mov      ecx, gword ptr [eax+0x1C]
        ; gcrRegs +[ecx]
@@ -195,65 +190,67 @@ G_M56215_IG06:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        jbe      G_M56215_IG10
        mov      edx, gword ptr [ecx+0x80]
        ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x78], edx
+       mov      gword ptr [ebp-0x7C], edx
        ; GC ptr vars +{V12}
        mov      ecx, 1
        ; gcrRegs -[ecx]
        call     [System.IO.Packaging.PackageXmlStringTable:CheckIdRange(int)]
        ; gcrRegs -[edx]
        ; byrRegs -[eax]
-       mov      ecx, edi
-       ; gcrRegs +[ecx]
-       mov      edi, gword ptr [ebp-0x78]
-       mov      edx, edi
+       mov      eax, bword ptr [ebp-0x88]
+       ; byrRegs +[eax]
+       mov      edx, gword ptr [eax+0x1C]
        ; gcrRegs +[edx]
-       mov      edi, bword ptr [ebp-0x80]
-       ; gcrRegs -[edi]
-       ; byrRegs +[edi]
-       mov      eax, gword ptr [edi+0x1C]
-       ; gcrRegs +[eax]
-       cmp      dword ptr [eax+0x04], 1
+       cmp      dword ptr [edx+0x04], 1
        jbe      G_M56215_IG10
-       push     gword ptr [eax+0x14]
+       push     gword ptr [edx+0x14]
+       mov      edx, gword ptr [ebp-0x7C]
+       mov      ecx, gword ptr [ebp-0x78]
+       ; gcrRegs +[ecx]
        cmp      dword ptr [ecx], ecx
-       ; GC ptr vars -{V12}
+       ; GC ptr vars -{V11 V12}
        call     [<unknown method>]
-       ; gcrRegs -[eax ecx edx]
+       ; gcrRegs -[ecx edx]
+       ; byrRegs -[eax]
        mov      eax, gword ptr [esi+0x0C]
        ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x7C], eax
+       mov      gword ptr [ebp-0x80], eax
        ; GC ptr vars +{V13}
        mov      ecx, 6
        call     [System.IO.Packaging.PackageXmlStringTable:CheckIdRange(int)]
        ; gcrRegs -[eax]
-       mov      ecx, gword ptr [ebp-0x7C]
-       ; gcrRegs +[ecx]
+       mov      edx, bword ptr [ebp-0x88]
+       ; byrRegs +[edx]
+       mov      edx, gword ptr [edx+0x1C]
+       ; gcrRegs +[edx]
+       ; byrRegs -[edx]
+       cmp      dword ptr [edx+0x04], 6
+       jbe      G_M56215_IG10
+       push     gword ptr [edx+0x50]
        mov      edx, dword ptr [(reloc)]      ; const ptr
+       ; gcrRegs -[edx]
        mov      edx, gword ptr [edx]
        ; gcrRegs +[edx]
-       mov      eax, gword ptr [edi+0x1C]
-       ; gcrRegs +[eax]
-       cmp      dword ptr [eax+0x04], 6
-       jbe      G_M56215_IG10
-       push     gword ptr [eax+0x50]
+       mov      ecx, gword ptr [ebp-0x80]
+       ; gcrRegs +[ecx]
        cmp      dword ptr [ecx], ecx
-       ; GC ptr vars -{V13 V43}
+       ; GC ptr vars -{V13 V37}
...

+29 (+7.16%) : 209613.dasm - System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (FullOpts)

@@ -26,24 +26,23 @@
 ;  V14 tmp10        [V14,T11] (  2,  8   )     ref  ->  edx         class-hnd "Inlining Arg" <ubyte[]>
 ;  V15 tmp11        [V15    ] (  2,  8   )  struct (12) [ebp-0x20]  do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.Memory`1[ubyte]>
 ;  V16 tmp12        [V16    ] (  2,  8   )  struct (12) [ebp-0x2C]  do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <System.ReadOnlyMemory`1[ubyte]>
-;  V17 tmp13        [V17,T08] (  2, 10   )   byref  ->  edx         "field V05._reference (fldOffset=0x0)" P-INDEP
-;  V18 tmp14        [V18,T05] (  2, 16   )     int  ->  eax         "field V05._length (fldOffset=0x4)" P-INDEP
+;  V17 tmp13        [V17,T08] (  2, 10   )   byref  ->  ecx         "field V05._reference (fldOffset=0x0)" P-INDEP
+;  V18 tmp14        [V18,T05] (  2, 16   )     int  ->  edx         "field V05._length (fldOffset=0x4)" P-INDEP
 ;  V19 tmp15        [V19,T12] (  2,  8   )     ref  ->  [ebp-0x20]  do-not-enreg[H] hidden-struct-arg "field V15._object (fldOffset=0x0)" P-DEP
-;  V20 tmp16        [V20,T17] (  2,  8   )     int  ->  [ebp-0x1C]  do-not-enreg[H] hidden-struct-arg "field V15._index (fldOffset=0x4)" P-DEP
-;  V21 tmp17        [V21,T18] (  2,  8   )     int  ->  [ebp-0x18]  do-not-enreg[H] hidden-struct-arg "field V15._length (fldOffset=0x8)" P-DEP
+;  V20 tmp16        [V20,T16] (  2,  8   )     int  ->  [ebp-0x1C]  do-not-enreg[H] hidden-struct-arg "field V15._index (fldOffset=0x4)" P-DEP
+;  V21 tmp17        [V21,T17] (  2,  8   )     int  ->  [ebp-0x18]  do-not-enreg[H] hidden-struct-arg "field V15._length (fldOffset=0x8)" P-DEP
 ;  V22 tmp18        [V22,T13] (  2,  8   )     ref  ->  [ebp-0x2C]  do-not-enreg[H] hidden-struct-arg "field V16._object (fldOffset=0x0)" P-DEP
-;  V23 tmp19        [V23,T19] (  2,  8   )     int  ->  [ebp-0x28]  do-not-enreg[H] hidden-struct-arg "field V16._index (fldOffset=0x4)" P-DEP
-;  V24 tmp20        [V24,T20] (  2,  8   )     int  ->  [ebp-0x24]  do-not-enreg[H] hidden-struct-arg "field V16._length (fldOffset=0x8)" P-DEP
+;  V23 tmp19        [V23,T18] (  2,  8   )     int  ->  [ebp-0x28]  do-not-enreg[H] hidden-struct-arg "field V16._index (fldOffset=0x4)" P-DEP
+;  V24 tmp20        [V24,T19] (  2,  8   )     int  ->  [ebp-0x24]  do-not-enreg[H] hidden-struct-arg "field V16._length (fldOffset=0x8)" P-DEP
 ;  V25 tmp21        [V25,T04] (  6, 17.50)     int  ->  edi         "V01.[004..008)"
-;  V26 tmp22        [V26,T25] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
-;  V27 tmp23        [V27,T21] (  2,  8   )     int  ->  edx         "Cast away GC"
-;  V28 tmp24        [V28,T14] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V29 tmp25        [V29,T22] (  2,  8   )     int  ->  edx         "argument with side effect"
-;  V30 tmp26        [V30,T15] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V31 tmp27        [V31,T16] (  2,  8   )     ref  ->  eax         "argument with side effect"
-;  V32 cse0         [V32,T23] (  3,  6   )     ref  ->  edx         "CSE - conservative"
-;  V33 cse1         [V33,T24] (  3,  6   )     ref  ->  edx         "CSE - conservative"
-;  V34 cse2         [V34,T02] ( 13, 25.50)     int  ->  ebx         "CSE - aggressive"
+;  V26 tmp22        [V26,T24] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
+;  V27 tmp23        [V27,T20] (  2,  8   )     int  ->  edx         "Cast away GC"
+;  V28 tmp24        [V28,T21] (  2,  8   )     int  ->  edx         "argument with side effect"
+;  V29 tmp25        [V29,T14] (  2,  8   )     ref  ->  ecx         "argument with side effect"
+;  V30 tmp26        [V30,T15] (  2,  8   )     ref  ->  eax         "argument with side effect"
+;  V31 cse0         [V31,T22] (  3,  6   )     ref  ->  edx         "CSE - moderate"
+;  V32 cse1         [V32,T23] (  3,  6   )     ref  ->  edx         "CSE - moderate"
+;  V33 cse2         [V33,T02] ( 13, 25.50)     int  ->  ebx         "CSE - aggressive"
 ;
 ; Lcl frame size = 40
 
@@ -67,7 +66,7 @@ G_M15958_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      edi, dword ptr [ebp+0x0C]
        mov      ebx, dword ptr [(reloc)]      ; const ptr
        cmp      dword ptr [esi+ebx+0x10], 0
-       jne      G_M15958_IG15
+       jne      G_M15958_IG20
        xor      ecx, ecx
        cmp      gword ptr [esi+ebx], 0
        sete     cl
@@ -96,49 +95,47 @@ G_M15958_IG03:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000
 G_M15958_IG04:        ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      eax, gword ptr [esi+ebx+0x04]
        ; gcrRegs +[eax]
-       mov      ecx, eax
-       ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x30], ecx
+       mov      gword ptr [ebp-0x30], eax
        ; GC ptr vars +{V08}
-       mov      eax, edi
-       ; gcrRegs -[eax]
-       mov      edx, bword ptr [ebp+0x08]
-       ; byrRegs +[edx]
-       cmp      byte  ptr [ecx], cl
-       test     eax, eax
+       mov      edx, edi
+       mov      ecx, bword ptr [ebp+0x08]
+       ; byrRegs +[ecx]
+       cmp      byte  ptr [eax], al
+       test     edx, edx
        jne      SHORT G_M15958_IG06
-                       ;; size=20 bbWeight=8 PerfScore 70.00
+                       ;; size=18 bbWeight=8 PerfScore 68.00
 G_M15958_IG05:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[ecx]
-       ; byrRegs -[edx]
+       ; gcrRegs -[eax]
+       ; byrRegs -[ecx]
        ; GC ptr vars -{V08}
-       xor      eax, eax
+       xor      edx, edx
        jmp      SHORT G_M15958_IG07
                        ;; size=4 bbWeight=2 PerfScore 4.50
-G_M15958_IG06:        ; bbWeight=2, gcVars=00000001 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000004 {edx}, gcvars, byref
-       ; byrRegs +[edx]
+G_M15958_IG06:        ; bbWeight=2, gcVars=00000001 {V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000002 {ecx}, gcvars, byref
+       ; byrRegs +[ecx]
        ; GC ptr vars +{V00 V08}
        push     edi
-       push     edx
+       push     ecx
        call     [<unknown method>]
-       ; byrRegs -[edx] +[eax]
+       ; byrRegs -[ecx] +[eax]
        mov      bword ptr [ebp-0x14], eax
-       mov      ecx, gword ptr [ebp-0x30]
-       ; gcrRegs +[ecx]
        mov      edx, bword ptr [ebp-0x14]
        ; byrRegs +[edx]
        push     edi
+       mov      ecx, gword ptr [ebp-0x30]
+       ; gcrRegs +[ecx]
        ; GC ptr vars -{V00 V08}
        call     [<unknown method>]
        ; gcrRegs -[ecx]
        ; byrRegs -[eax edx]
-                       ;; size=24 bbWeight=2 PerfScore 24.00
+       mov      edx, eax
+                       ;; size=26 bbWeight=2 PerfScore 24.50
 G_M15958_IG07:        ; bbWeight=8, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        xor      ecx, ecx
        ; byrRegs +[ecx]
        mov      bword ptr [ebp-0x14], ecx
-       mov      dword ptr [ebp-0x10], eax
-       test     eax, eax
+       mov      dword ptr [ebp-0x10], edx
+       test     edx, edx
        jne      G_M15958_IG13
                        ;; size=16 bbWeight=8 PerfScore 28.00
 G_M15958_IG08:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
@@ -148,7 +145,7 @@ G_M15958_IG08:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        call     [System.IO.Compression.DeflateStream:get_InflatorIsFinished():ubyte:this]
        ; gcrRegs -[ecx]
        test     eax, eax
-       jne      G_M15958_IG13
+       jne      G_M15958_IG12
        mov      ecx, gword ptr [esi+ebx+0x04]
        ; gcrRegs +[ecx]
        mov      edx, dword ptr [(reloc)]      ; const ptr
@@ -173,11 +170,11 @@ G_M15958_IG09:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
        test     eax, eax
-       jle      SHORT G_M15958_IG12
+       jle      SHORT G_M15958_IG14
        mov      edx, gword ptr [esi+ebx+0x0C]
        ; gcrRegs +[edx]
        cmp      dword ptr [edx+0x04], eax
-       jl       G_M15958_IG17
+       jl       G_M15958_IG22
        mov      ecx, gword ptr [esi+ebx+0x04]
        ; gcrRegs +[ecx]
        mov      gword ptr [ebp-0x34], ecx
@@ -210,32 +207,42 @@ G_M15958_IG10:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
 G_M15958_IG11:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[esi]
        mov      esi, dword ptr [ebp-0x10]
-       jmp      SHORT G_M15958_IG13
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M15958_IG12:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, esi
+       jmp      SHORT G_M15958_IG15
+                       ;; size=7 bbWeight=0.50 PerfScore 1.62
+G_M15958_IG12:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x10]
+       jmp      SHORT G_M15958_IG15
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M15958_IG13:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x10]
+       jmp      SHORT G_M15958_IG15
+                       ;; size=5 bbWeight=4 PerfScore 12.00
+G_M15958_IG14:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[esi]
        call     [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
        ; byrRegs +[eax]
        cmp      byte  ptr [eax+0x68], 0
-       je       SHORT G_M15958_IG13
+       je       SHORT G_M15958_IG19
        test     edi, edi
-       je       SHORT G_M15958_IG13
+       je       SHORT G_M15958_IG18
        mov      eax, gword ptr [esi+ebx+0x04]
        ; gcrRegs +[eax]
        ; byrRegs -[eax]
        mov      edx, dword ptr [(reloc)]      ; const ptr
        cmp      byte  ptr [eax+edx], 0
-       jne      SHORT G_M15958_IG13
+       jne      SHORT G_M15958_IG17
        mov      eax, gword ptr [esi+ebx+0x04]
        mov      edx, dword ptr [(reloc)]      ; const ptr
        cmp      byte  ptr [eax+edx], 0
-       jne      SHORT G_M15958_IG16
-                       ;; size=48 bbWeight=0.50 PerfScore 12.12
-G_M15958_IG13:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       mov      edx, dword ptr [ebp-0x10]
+       jne      SHORT G_M15958_IG21
+                       ;; size=51 bbWeight=0.50 PerfScore 12.62
+G_M15958_IG15:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax esi]
-       mov      eax, dword ptr [ebp-0x10]
-                       ;; size=3 bbWeight=1 PerfScore 1.00
-G_M15958_IG14:        ; bbWeight=1, epilog, nogc, extend
+       mov      eax, edx
+                       ;; size=2 bbWeight=1 PerfScore 0.25
+G_M15958_IG16:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -243,19 +250,31 @@ G_M15958_IG14:        ; bbWeight=1, epilog, nogc, extend
        pop      ebp
        ret      8
                        ;; size=10 bbWeight=1 PerfScore 4.50
-G_M15958_IG15:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M15958_IG17:        ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       mov      edx, dword ptr [ebp-0x10]
+       jmp      SHORT G_M15958_IG15
+                       ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M15958_IG18:        ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x10]
+       jmp      SHORT G_M15958_IG15
+                       ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M15958_IG19:        ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x10]
+       jmp      SHORT G_M15958_IG15
+                       ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M15958_IG20:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        call     [System.IO.Compression.DeflateStream:<EnsureDecompressionMode>g__ThrowCannotReadFromDeflateStreamException|43_0()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M15958_IG16:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15958_IG21:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        call     [System.IO.Compression.DeflateStream:ThrowTruncatedInvalidData()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M15958_IG17:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15958_IG22:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        call     [System.IO.Compression.DeflateStream:ThrowGenericInvalidData()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 405, prolog size 27, PerfScore 355.71, instruction count 125, allocated bytes for code 405 (MethodHash=2e44c1a9) for method System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (FullOpts)
+; Total bytes of code 434, prolog size 27, PerfScore 374.33, instruction count 137, allocated bytes for code 434 (MethodHash=2e44c1a9) for method System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (FullOpts)
 ; ============================================================
 

+15 (+7.89%) : 21996.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)

@@ -8,29 +8,31 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  9,  5.50)   byref  ->  edi         this single-def
+;  V00 this         [V00,T01] (  8,  5   )   byref  ->  edi         this single-def
 ;  V01 arg1         [V01,T00] ( 11,  7   )     int  ->  esi         single-def
 ;  V02 arg2         [V02,T02] (  9,  5   )     int  ->  ebx         single-def
-;  V03 loc0         [V03,T18] (  2,  1   )     ref  ->  [ebp-0x10]  class-hnd spill-single-def <<unknown class>>
-;  V04 loc1         [V04,T19] (  2,  1   )     ref  ->  [ebp-0x14]  class-hnd spill-single-def <<unknown class>>
-;  V05 tmp0         [V05,T03] (  3,  3   )     ref  ->  edx         single-def "arr expr"
-;  V06 tmp1         [V06,T04] (  3,  3   )     ref  ->  eax         single-def "arr expr"
-;  V07 tmp2         [V07,T11] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
-;  V08 tmp3         [V08,T12] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V09 tmp4         [V09,T05] (  3,  3   )     ref  ->  edx         single-def "arr expr"
-;  V10 tmp5         [V10,T06] (  3,  3   )     ref  ->  ecx         single-def "arr expr"
-;  V11 tmp6         [V11,T13] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;* V12 tmp7         [V12,T20] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;  V13 tmp8         [V13,T14] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
-;  V14 tmp9         [V14,T07] (  3,  3   )     ref  ->  edx         single-def "arr expr"
-;  V15 tmp10        [V15,T08] (  3,  3   )     ref  ->  ecx         single-def "arr expr"
-;  V16 tmp11        [V16,T15] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V17 tmp12        [V17,T17] (  2,  2   )     int  ->  esi         "argument with side effect"
-;  V18 tmp13        [V18,T16] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
-;  V19 cse0         [V19,T09] (  5,  2.50)     ref  ->  ecx         "CSE - moderate"
-;  V20 cse1         [V20,T10] (  4,  2   )     ref  ->  ecx         "CSE - conservative"
+;  V03 loc0         [V03,T21] (  2,  1   )     ref  ->  [ebp-0x14]  class-hnd spill-single-def <<unknown class>>
+;  V04 loc1         [V04,T22] (  2,  1   )     ref  ->  [ebp-0x18]  class-hnd spill-single-def <<unknown class>>
+;  V05 tmp0         [V05,T03] (  3,  3   )     ref  ->  eax         single-def "arr expr"
+;  V06 tmp1         [V06,T08] (  2,  2   )     ref  ->  edx         single-def "arr expr"
+;  V07 tmp2         [V07,T09] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
+;  V08 tmp3         [V08,T10] (  2,  2   )     ref  ->  eax         single-def "argument with side effect"
+;  V09 tmp4         [V09,T04] (  3,  3   )     ref  ->  edx         single-def "arr expr"
+;  V10 tmp5         [V10,T11] (  2,  2   )     ref  ->  ecx         single-def "arr expr"
+;  V11 tmp6         [V11,T12] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V12 tmp7         [V12,T13] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
+;  V13 tmp8         [V13,T05] (  3,  3   )     ref  ->  edx         single-def "arr expr"
+;  V14 tmp9         [V14,T14] (  2,  2   )     ref  ->  ecx         single-def "arr expr"
+;  V15 tmp10        [V15,T15] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V16 tmp11        [V16,T16] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
+;  V17 cse0         [V17,T06] (  5,  2.50)     ref  ->  ecx         "CSE - moderate"
+;  V18 cse1         [V18,T07] (  4,  2   )     ref  ->  ecx         "CSE - moderate"
+;  V19 cse2         [V19,T17] (  3,  1.50)     ref  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
+;  V20 cse3         [V20,T18] (  3,  1.50)     int  ->  [ebp-0x10]  spill-single-def "CSE - moderate"
+;  V21 cse4         [V21,T19] (  3,  1.50)     int  ->  eax         "CSE - moderate"
+;  V22 cse5         [V22,T20] (  3,  1.50)     int  ->  eax         "CSE - moderate"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 16
 
 G_M28033_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -38,7 +40,7 @@ G_M28033_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 8
+       sub      esp, 16
        mov      edi, ecx
        ; byrRegs +[edi]
        mov      esi, edx
@@ -46,47 +48,56 @@ G_M28033_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=16 bbWeight=1 PerfScore 6.00
 G_M28033_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
        cmp      esi, ebx
-       je       G_M28033_IG04
+       je       G_M28033_IG05
                        ;; size=8 bbWeight=1 PerfScore 1.25
 G_M28033_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
        mov      ecx, gword ptr [edi+0x08]
        ; gcrRegs +[ecx]
        mov      edx, gword ptr [edi]
        ; gcrRegs +[edx]
-       cmp      esi, dword ptr [edx+0x04]
-       jae      G_M28033_IG05
-       mov      edx, gword ptr [edx+4*esi+0x08]
-       mov      eax, gword ptr [edi]
+       mov      gword ptr [ebp-0x1C], edx
+       ; GC ptr vars +{V19}
+       mov      eax, edx
        ; gcrRegs +[eax]
-       cmp      ebx, dword ptr [eax+0x04]
-       jae      G_M28033_IG05
-       push     gword ptr [eax+4*ebx+0x08]
+       mov      edx, dword ptr [eax+0x04]
+       ; gcrRegs -[edx]
+       mov      dword ptr [ebp-0x10], edx
+       cmp      esi, edx
+       jae      G_M28033_IG06
+       mov      eax, gword ptr [eax+4*esi+0x08]
+       mov      edx, gword ptr [ebp-0x1C]
+       ; gcrRegs +[edx]
+       cmp      ebx, dword ptr [ebp-0x10]
+       jae      G_M28033_IG06
+       push     gword ptr [edx+4*ebx+0x08]
+       mov      edx, eax
+       ; GC ptr vars -{V19}
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
        test     eax, eax
-       jle      SHORT G_M28033_IG04
+       jle      SHORT G_M28033_IG05
        mov      ecx, gword ptr [edi]
        ; gcrRegs +[ecx]
        mov      edx, ecx
        ; gcrRegs +[edx]
-       cmp      esi, dword ptr [edx+0x04]
-       jae      SHORT G_M28033_IG05
-       mov      eax, gword ptr [edx+4*esi+0x08]
-       ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x10], eax
+       mov      eax, dword ptr [edx+0x04]
+       cmp      esi, eax
+       jae      SHORT G_M28033_IG06
+       mov      edx, gword ptr [edx+4*esi+0x08]
+       mov      gword ptr [ebp-0x14], edx
        ; GC ptr vars +{V03}
        mov      edx, ecx
-       cmp      ebx, dword ptr [ecx+0x04]
-       jae      SHORT G_M28033_IG05
+       cmp      ebx, eax
+       jae      SHORT G_M28033_IG06
        push     gword ptr [ecx+4*ebx+0x08]
        mov      ecx, edx
        mov      edx, esi
        ; gcrRegs -[edx]
        call     [CORINFO_HELP_ARRADDR_ST]
-       ; gcrRegs -[eax ecx]
+       ; gcrRegs -[ecx]
        mov      ecx, gword ptr [edi]
        ; gcrRegs +[ecx]
-       push     gword ptr [ebp-0x10]
+       push     gword ptr [ebp-0x14]
        mov      edx, ebx
        ; GC ptr vars -{V03}
        call     [CORINFO_HELP_ARRADDR_ST]
@@ -94,34 +105,36 @@ G_M28033_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080
        mov      ecx, gword ptr [edi+0x04]
        ; gcrRegs +[ecx]
        test     ecx, ecx
-       je       SHORT G_M28033_IG04
+       je       SHORT G_M28033_IG05
        mov      edx, ecx
        ; gcrRegs +[edx]
-       cmp      esi, dword ptr [edx+0x04]
-       jae      SHORT G_M28033_IG05
-       mov      eax, gword ptr [edx+4*esi+0x08]
-       ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x14], eax
+       mov      eax, dword ptr [edx+0x04]
+       cmp      esi, eax
+       jae      SHORT G_M28033_IG06
+       mov      edx, gword ptr [edx+4*esi+0x08]
+       mov      gword ptr [ebp-0x18], edx
        ; GC ptr vars +{V04}
        mov      edx, ecx
-       cmp      ebx, dword ptr [ecx+0x04]
-       jae      SHORT G_M28033_IG05
+       cmp      ebx, eax
+       jae      SHORT G_M28033_IG06
        push     gword ptr [ecx+4*ebx+0x08]
        mov      ecx, edx
        mov      edx, esi
        ; gcrRegs -[edx]
        call     [CORINFO_HELP_ARRADDR_ST]
-       ; gcrRegs -[eax ecx]
+       ; gcrRegs -[ecx]
+                       ;; size=150 bbWeight=0.50 PerfScore 30.25
+G_M28033_IG04:        ; bbWeight=0.50, extend
        mov      ecx, gword ptr [edi+0x04]
        ; gcrRegs +[ecx]
-       push     gword ptr [ebp-0x14]
+       push     gword ptr [ebp-0x18]
        mov      edx, ebx
        ; GC ptr vars -{V04}
        call     [CORINFO_HELP_ARRADDR_ST]
        ; gcrRegs -[ecx]
        ; byrRegs -[edi]
-                       ;; size=149 bbWeight=0.50 PerfScore 37.00
-G_M28033_IG04:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+                       ;; size=14 bbWeight=0.50 PerfScore 3.12
+G_M28033_IG05:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -129,11 +142,11 @@ G_M28033_IG04:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=1 PerfScore 4.50
-G_M28033_IG05:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M28033_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        call     [CORINFO_HELP_RNGCHKFAIL]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 190, prolog size 9, PerfScore 48.75, instruction count 67, allocated bytes for code 190 (MethodHash=4064927e) for method System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
+; Total bytes of code 205, prolog size 9, PerfScore 45.12, instruction count 74, allocated bytes for code 205 (MethodHash=4064927e) for method System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
 ; ============================================================
 

libraries.pmi.windows.x86.checked.mch

-48 (-23.41%) : 189854.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)

@@ -8,24 +8,22 @@
 ; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] (  8, 12   )     ref  ->  esi         this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
+;  V00 this         [V00,T05] (  8, 12   )     ref  ->  esi         this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
 ;* V01 arg1         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Xml.Xsl.XsltContext>
-;  V02 arg2         [V02,T08] (  7, 11   )     ref  ->  [ebp+0x0C]  class-hnd single-def <System.Object[]>
+;  V02 arg2         [V02,T06] (  8, 11.04)     ref  ->  edi         class-hnd single-def <System.Object[]>
 ;* V03 arg3         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Xml.XPath.XPathNavigator>
-;  V04 loc0         [V04,T03] ( 11, 19   )     int  ->  ebx        
+;  V04 loc0         [V04,T00] ( 22, 39.04)     int  ->  ebx        
 ;* V05 tmp0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;* V06 tmp1         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
 ;* V07 tmp2         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Object>
 ;  V08 tmp3         [V08,T01] (  6, 24   )     ref  ->  eax         "arr expr"
-;  V09 tmp4         [V09,T02] (  6, 24   )     ref  ->  edi         "arr expr"
-;  V10 tmp5         [V10,T05] (  4, 16   )     ref  ->  ecx         "argument with side effect"
-;  V11 tmp6         [V11,T06] (  4, 16   )     int  ->  eax         "argument with side effect"
-;  V12 tmp7         [V12,T00] ( 15, 56.08)     int  ->  [ebp-0x10]  "argument with side effect"
-;  V13 tmp8         [V13,T04] (  5, 16.08)     ref  ->  eax         "argument with side effect"
-;  V14 tmp9         [V14,T09] (  3,  6   )     ref  ->  ecx         single-def "argument with side effect"
-;  V15 tmp10        [V15,T10] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
+;  V09 tmp4         [V09,T02] (  6, 24   )     ref  ->  eax         "arr expr"
+;  V10 tmp5         [V10,T03] (  4, 16   )     ref  ->  ecx         "argument with side effect"
+;  V11 tmp6         [V11,T04] (  4, 16   )     int  ->  edx         "argument with side effect"
+;  V12 tmp7         [V12,T07] (  3,  6   )     ref  ->  ecx         single-def "argument with side effect"
+;  V13 tmp8         [V13,T08] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M50779_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -33,86 +31,69 @@ G_M50779_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       push     eax
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, gword ptr [ebp+0x0C]
        ; gcrRegs +[edi]
-                       ;; size=12 bbWeight=1 PerfScore 6.50
+                       ;; size=11 bbWeight=1 PerfScore 5.50
 G_M50779_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ebx, dword ptr [edi+0x04]
        dec      ebx
-       js       G_M50779_IG06
+       js       SHORT G_M50779_IG06
        cmp      dword ptr [edi+0x04], ebx
        jle      SHORT G_M50779_IG05
-                       ;; size=15 bbWeight=1 PerfScore 7.25
+                       ;; size=11 bbWeight=1 PerfScore 7.25
 G_M50779_IG03:        ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp+0x0C], edi
-       mov      eax, edi
-       ; gcrRegs +[eax]
-       mov      edx, ebx
-       mov      ecx, gword ptr [eax+4*edx+0x08]
+       mov      ecx, gword ptr [edi+4*ebx+0x08]
        ; gcrRegs +[ecx]
        mov      eax, gword ptr [esi+0x04]
-       cmp      edx, dword ptr [eax+0x04]
-       jae      G_M50779_IG08
-       mov      eax, dword ptr [eax+4*edx+0x08]
-       ; gcrRegs -[eax]
-       mov      edi, gword ptr [esi+0x1C]
-       cmp      edx, dword ptr [edi+0x04]
-       jae      G_M50779_IG08
-       mov      dword ptr [ebp-0x10], edx
-       push     gword ptr [edi+4*edx+0x08]
-       mov      edx, eax
+       ; gcrRegs +[eax]
+       cmp      ebx, dword ptr [eax+0x04]
+       jae      SHORT G_M50779_IG08
+       mov      edx, dword ptr [eax+4*ebx+0x08]
+       mov      eax, gword ptr [esi+0x1C]
+       cmp      ebx, dword ptr [eax+0x04]
+       jae      SHORT G_M50779_IG08
+       push     gword ptr [eax+4*ebx+0x08]
        call     [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
-       ; gcrRegs -[ecx edi] +[eax]
+       ; gcrRegs -[ecx]
        push     eax
-       mov      edx, dword ptr [ebp-0x10]
-       mov      ecx, gword ptr [ebp+0x0C]
+       mov      edx, ebx
+       mov      ecx, edi
        ; gcrRegs +[ecx]
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[eax ecx]
        dec      ebx
-       mov      edi, gword ptr [ebp+0x0C]
-       ; gcrRegs +[edi]
        jns      SHORT G_M50779_IG03
-                       ;; size=72 bbWeight=3.96 PerfScore 118.80
+                       ;; size=47 bbWeight=3.96 PerfScore 98.01
 G_M50779_IG04:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        jmp      SHORT G_M50779_IG06
                        ;; size=2 bbWeight=1 PerfScore 2.00
 G_M50779_IG05:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp+0x0C], edi
-       mov      eax, edi
-       ; gcrRegs +[eax]
-       mov      edx, ebx
-       cmp      edx, dword ptr [eax+0x04]
+       cmp      ebx, dword ptr [edi+0x04]
        jae      SHORT G_M50779_IG08
-       mov      ecx, gword ptr [eax+4*edx+0x08]
+       mov      ecx, gword ptr [edi+4*ebx+0x08]
        ; gcrRegs +[ecx]
        mov      eax, gword ptr [esi+0x04]
-       cmp      edx, dword ptr [eax+0x04]
+       ; gcrRegs +[eax]
+       cmp      ebx, dword ptr [eax+0x04]
        jae      SHORT G_M50779_IG08
-       mov      eax, dword ptr [eax+4*edx+0x08]
-       ; gcrRegs -[eax]
-       mov      edi, gword ptr [esi+0x1C]
-       cmp      edx, dword ptr [edi+0x04]
+       mov      edx, dword ptr [eax+4*ebx+0x08]
+       mov      eax, gword ptr [esi+0x1C]
+       cmp      ebx, dword ptr [eax+0x04]
        jae      SHORT G_M50779_IG08
-       mov      dword ptr [ebp-0x10], edx
-       push     gword ptr [edi+4*edx+0x08]
-       mov      edx, eax
+       push     gword ptr [eax+4*ebx+0x08]
        call     [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
-       ; gcrRegs -[ecx edi] +[eax]
+       ; gcrRegs -[ecx]
        push     eax
-       mov      edx, dword ptr [ebp-0x10]
-       mov      ecx, gword ptr [ebp+0x0C]
+       mov      edx, ebx
+       mov      ecx, edi
        ; gcrRegs +[ecx]
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[eax ecx]
        dec      ebx
-       mov      edi, gword ptr [ebp+0x0C]
-       ; gcrRegs +[edi]
        jns      SHORT G_M50779_IG05
-                       ;; size=69 bbWeight=0.04 PerfScore 1.36
+                       ;; size=52 bbWeight=0.04 PerfScore 1.15
 G_M50779_IG06:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        mov      ecx, gword ptr [esi+0x18]
        ; gcrRegs +[ecx]
@@ -128,19 +109,18 @@ G_M50779_IG06:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
        ; gcrRegs -[ecx edx esi edi] +[eax]
                        ;; size=21 bbWeight=1 PerfScore 15.00
 G_M50779_IG07:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      8
-                       ;; size=8 bbWeight=1 PerfScore 4.50
+                       ;; size=7 bbWeight=1 PerfScore 4.00
 G_M50779_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[eax]
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 205, prolog size 7, PerfScore 155.41, instruction count 77, allocated bytes for code 205 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
+; Total bytes of code 157, prolog size 6, PerfScore 132.91, instruction count 63, allocated bytes for code 157 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
 ; ============================================================
 

-8 (-15.09%) : 74021.dasm - System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)

@@ -7,47 +7,42 @@
 ; No matching PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  3,  3   )     ref  ->  [esp+0x00]  this class-hnd single-def <System.Data.Common.SqlBinaryStorage>
+;  V00 this         [V00,T03] (  3,  3   )     ref  ->  edi         this class-hnd single-def <System.Data.Common.SqlBinaryStorage>
 ;  V01 arg1         [V01,T00] (  4,  4   )     int  ->  esi         single-def
 ;  V02 tmp0         [V02,T01] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "Single-def Box Helper" <System.Data.SqlTypes.SqlBinary>
 ;  V03 tmp1         [V03,T02] (  3,  6   )     ref  ->  ecx         single-def "arr expr"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M2130_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     edi
        push     esi
-       push     ebx
-       push     eax
-       mov      gword ptr [esp], ecx
-       ; GC ptr vars +{V00}
+       mov      edi, ecx
+       ; gcrRegs +[edi]
        mov      esi, edx
-                       ;; size=9 bbWeight=1 PerfScore 5.25
-G_M2130_IG02:        ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+                       ;; size=6 bbWeight=1 PerfScore 2.50
+G_M2130_IG02:        ; bbWeight=1, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, 0xD1FFAB1E      ; System.Data.SqlTypes.SqlBinary
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
-       lea      edi, bword ptr [eax+0x04]
-       ; byrRegs +[edi]
-       mov      ebx, gword ptr [esp]
-       ; gcrRegs +[ebx]
-       mov      ecx, gword ptr [ebx+0x24]
+       ; gcr arg pop 0
+       mov      ecx, gword ptr [edi+0x24]
        ; gcrRegs +[ecx]
        cmp      esi, dword ptr [ecx+0x04]
        jae      SHORT G_M2130_IG04
        lea      esi, bword ptr [ecx+4*esi+0x08]
        ; byrRegs +[esi]
-       ; GC ptr vars -{V00}
+       lea      edi, bword ptr [eax+0x04]
+       ; gcrRegs -[edi]
+       ; byrRegs +[edi]
        call     CORINFO_HELP_ASSIGN_BYREF
-       ; gcrRegs -[ecx ebx]
-                       ;; size=33 bbWeight=1 PerfScore 10.75
+       ; gcrRegs -[ecx]
+                       ;; size=30 bbWeight=1 PerfScore 9.75
 G_M2130_IG03:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
-       pop      ebx
        pop      esi
        pop      edi
        ret      
-                       ;; size=5 bbWeight=1 PerfScore 3.00
+                       ;; size=3 bbWeight=1 PerfScore 2.00
 G_M2130_IG04:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[eax]
        ; byrRegs -[esi edi]
@@ -55,6 +50,6 @@ G_M2130_IG04:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 53, prolog size 4, PerfScore 19.00, instruction count 22, allocated bytes for code 53 (MethodHash=63a8f7ad) for method System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
+; Total bytes of code 45, prolog size 2, PerfScore 14.25, instruction count 17, allocated bytes for code 45 (MethodHash=63a8f7ad) for method System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
 ; ============================================================
 

-13 (-14.29%) : 180751.dasm - System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)

@@ -12,37 +12,29 @@
 ;* V02 tmp1         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <<unknown class>>
 ;  V03 tmp2         [V03,T01] (  3,  6   )     ref  ->  edi         single-def "arr expr"
 ;  V04 tmp3         [V04,T02] (  3,  6   )     int  ->  eax         "index expr"
-;  TEMP_01                                   byref  ->  [ebp-0x0C]
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M3247_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
        push     edi
        push     esi
-       push     eax
-       xor      eax, eax
-       mov      dword ptr [ebp-0x0C], eax
        mov      esi, ecx
        ; gcrRegs +[esi]
-                       ;; size=13 bbWeight=1 PerfScore 5.75
+                       ;; size=7 bbWeight=1 PerfScore 3.50
 G_M3247_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       lea      edx, bword ptr [esi+0x9C]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x0C], edx
        mov      edi, gword ptr [esi+0x88]
        ; gcrRegs +[edi]
        mov      ecx, esi
        ; gcrRegs +[ecx]
        call     [System.Xml.XmlSqlBinaryReader:ReadNameRef():int:this]
        ; gcrRegs -[ecx]
-       ; byrRegs -[edx]
        cmp      eax, dword ptr [edi+0x04]
        jae      SHORT G_M3247_IG04
        mov      ecx, gword ptr [edi+4*eax+0x08]
        ; gcrRegs +[ecx]
-       mov      edx, bword ptr [ebp-0x0C]
+       lea      edx, bword ptr [esi+0x9C]
        ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_ECX
        ; gcrRegs -[ecx edi]
@@ -58,20 +50,19 @@ G_M3247_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; byrRegs -[edx]
        mov      dword ptr [esi+0x70], eax
        mov      dword ptr [esi+0x54], 7
-                       ;; size=67 bbWeight=1 PerfScore 23.50
+                       ;; size=61 bbWeight=1 PerfScore 21.50
 G_M3247_IG03:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
        pop      esi
        pop      edi
        pop      ebp
        ret      
-                       ;; size=5 bbWeight=1 PerfScore 3.00
+                       ;; size=4 bbWeight=1 PerfScore 2.50
 G_M3247_IG04:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[esi]
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 91, prolog size 11, PerfScore 32.25, instruction count 32, allocated bytes for code 91 (MethodHash=7b43f350) for method System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
+; Total bytes of code 78, prolog size 5, PerfScore 27.50, instruction count 26, allocated bytes for code 78 (MethodHash=7b43f350) for method System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
 ; ============================================================
 

+9 (+3.56%) : 162729.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer1[ubyte]):this (FullOpts)

@@ -9,34 +9,33 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T04] ( 10, 16.50)     ref  ->  esi         this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
-;  V01 arg1         [V01,T08] (  4,  6.50)     ref  ->  [ebp-0x18]  class-hnd single-def <System.Collections.Generic.IComparer`1[ubyte]>
+;  V01 arg1         [V01,T13] (  4,  6.50)     ref  ->  [ebp-0x20]  class-hnd single-def <System.Collections.Generic.IComparer`1[ubyte]>
 ;  V02 loc0         [V02,T03] ( 10, 23   )     int  ->  ebx        
 ;  V03 loc1         [V03,T00] ( 10, 30.50)     int  ->  [ebp-0x10] 
-;  V04 tmp0         [V04,T06] (  2, 16   )     int  ->  ecx         "impAppendStmt"
+;  V04 tmp0         [V04,T06] (  2, 16   )     int  ->  [ebp-0x14]  spill-single-def "impAppendStmt"
 ;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-;  V06 tmp2         [V06,T22] (  2,  2   )     ref  ->  edx         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+;  V06 tmp2         [V06,T21] (  2,  2   )     ref  ->  edx         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
 ;  V07 tmp3         [V07,T01] (  3, 24   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-;* V08 tmp4         [V08,T18] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-;  V09 tmp5         [V09,T09] (  3, 12   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-;  V10 tmp6         [V10,T17] (  2,  8   )   ubyte  ->  edx         "Inlining Arg"
-;  V11 tmp7         [V11,T16] (  2,  8   )     ref  ->  eax         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+;* V08 tmp4         [V08,T17] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+;  V09 tmp5         [V09,T07] (  3, 12   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+;  V10 tmp6         [V10,T16] (  2,  8   )   ubyte  ->  edx         "Inlining Arg"
+;  V11 tmp7         [V11,T14] (  2,  8   )     ref  ->  eax         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
 ;* V13 tmp9         [V13    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V14 tmp10        [V14,T23] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V14 tmp10        [V14,T22] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
 ;  V15 tmp11        [V15,T02] (  3, 24   )     ref  ->  edi         "arr expr"
-;  V16 tmp12        [V16,T05] (  2, 16   )     ref  ->  ecx         "arr expr"
-;* V17 tmp13        [V17,T19] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V18 tmp14        [V18,T07] (  2, 16   )     int  ->  edx         "argument with side effect"
-;  V19 tmp15        [V19,T10] (  3, 12   )     ref  ->  edx         "arr expr"
-;  V20 tmp16        [V20,T11] (  3, 12   )     ref  ->  ecx         "arr expr"
-;  V21 cse0         [V21,T21] (  3,  2.50)     int  ->  ecx         "CSE - conservative"
-;  V22 cse1         [V22,T12] (  2,  8   )     ref  ->  ecx         "CSE - moderate"
-;  V23 cse2         [V23,T14] (  3, 12   )     int  ->  edx         "CSE - moderate"
-;  V24 cse3         [V24,T13] (  3, 12   )     ref  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
-;  V25 cse4         [V25,T20] (  3,  6   )     ref  ->  ecx         "CSE - conservative"
-;  V26 cse5         [V26,T15] (  3, 12   )     int  ->  [ebp-0x14]  spill-single-def "CSE - moderate"
+;  V16 tmp12        [V16,T05] (  2, 16   )     ref  ->  edx         "arr expr"
+;  V17 tmp13        [V17,T08] (  3, 12   )     ref  ->  edx         "arr expr"
+;  V18 tmp14        [V18,T15] (  2,  8   )     ref  ->  ecx         "arr expr"
+;  V19 cse0         [V19,T20] (  3,  2.50)     int  ->  ecx         "CSE - moderate"
+;  V20 cse1         [V20,T09] (  2,  8   )     ref  ->  ecx         "CSE - moderate"
+;  V21 cse2         [V21,T11] (  3, 12   )     int  ->  edx         "CSE - moderate"
+;  V22 cse3         [V22,T10] (  3, 12   )     ref  ->  [ebp-0x24]  spill-single-def "CSE - moderate"
+;  V23 cse4         [V23,T18] (  3,  6   )     ref  ->  ecx         "CSE - moderate"
+;  V24 cse5         [V24,T12] (  3, 12   )     int  ->  [ebp-0x18]  spill-single-def "CSE - moderate"
+;  V25 cse6         [V25,T19] (  3,  6   )     int  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 24
 
 G_M10347_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -44,7 +43,7 @@ G_M10347_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 16
+       sub      esp, 24
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
@@ -73,7 +72,7 @@ G_M10347_IG04:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
        ; gcrRegs +[edx]
        mov      edx, gword ptr [edx+0x04]
        push     ecx
-       mov      gword ptr [ebp-0x18], edi
+       mov      gword ptr [ebp-0x20], edi
        ; GC ptr vars +{V01}
        push     edi
        mov      ecx, edx
@@ -97,35 +96,36 @@ G_M10347_IG05:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        cmp      ebx, edx
        jge      G_M10347_IG11
        mov      ecx, gword ptr [ecx+0x04]
-       mov      gword ptr [ebp-0x1C], ecx
-       ; GC ptr vars +{V24}
+       mov      gword ptr [ebp-0x24], ecx
+       ; GC ptr vars +{V22}
        mov      edi, ecx
        ; gcrRegs +[edi]
        mov      ecx, dword ptr [edi+0x04]
        ; gcrRegs -[ecx]
-       mov      dword ptr [ebp-0x14], ecx
+       mov      dword ptr [ebp-0x18], ecx
        cmp      ebx, ecx
        jae      G_M10347_IG10
        movzx    ecx, byte  ptr [edi+ebx+0x08]
+       mov      dword ptr [ebp-0x14], ecx
        cmp      eax, edx
        jge      G_M10347_IG11
-       mov      edx, ecx
-       mov      ecx, gword ptr [ebp-0x1C]
-       ; gcrRegs +[ecx]
-       cmp      eax, dword ptr [ebp-0x14]
+       mov      edx, gword ptr [ebp-0x24]
+       ; gcrRegs +[edx]
+       cmp      eax, dword ptr [ebp-0x18]
        jae      SHORT G_M10347_IG10
        mov      dword ptr [ebp-0x10], eax
-       movzx    ecx, byte  ptr [ecx+eax+0x08]
-       ; gcrRegs -[ecx]
-       push     ecx
-       mov      ecx, gword ptr [ebp-0x18]
+       movzx    edx, byte  ptr [edx+eax+0x08]
+       ; gcrRegs -[edx]
+       push     edx
+       mov      ecx, gword ptr [ebp-0x20]
        ; gcrRegs +[ecx]
-       ; GC ptr vars -{V24}
+       mov      edx, dword ptr [ebp-0x14]
+       ; GC ptr vars -{V22}
        call     [<unknown method>]
        ; gcrRegs -[ecx edi]
        test     eax, eax
        jge      SHORT G_M10347_IG07
-                       ;; size=81 bbWeight=4 PerfScore 118.00
+                       ;; size=85 bbWeight=4 PerfScore 125.00
 G_M10347_IG06:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        inc      ebx
        mov      ecx, gword ptr [esi+0x04]
@@ -136,7 +136,9 @@ G_M10347_IG06:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      ecx, gword ptr [ecx+0x04]
        mov      edx, ecx
        ; gcrRegs +[edx]
-       cmp      edi, dword ptr [edx+0x04]
+       mov      eax, dword ptr [edx+0x04]
+       mov      dword ptr [ebp-0x1C], eax
+       cmp      edi, eax
        jae      SHORT G_M10347_IG10
        movzx    edx, byte  ptr [edx+edi+0x08]
        ; gcrRegs -[edx]
@@ -144,11 +146,11 @@ G_M10347_IG06:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcrRegs +[eax]
        cmp      ebx, dword ptr [eax+0x08]
        jge      SHORT G_M10347_IG11
-       cmp      ebx, dword ptr [ecx+0x04]
+       cmp      ebx, dword ptr [ebp-0x1C]
        jae      SHORT G_M10347_IG10
        mov      byte  ptr [ecx+ebx+0x08], dl
        mov      dword ptr [ebp-0x10], edi
-                       ;; size=47 bbWeight=2 PerfScore 55.00
+                       ;; size=52 bbWeight=2 PerfScore 53.50
 G_M10347_IG07:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax ecx]
        mov      edi, dword ptr [ebp-0x10]
@@ -185,6 +187,6 @@ G_M10347_IG11:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 253, prolog size 9, PerfScore 229.50, instruction count 92, allocated bytes for code 253 (MethodHash=a3fdd794) for method Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
+; Total bytes of code 262, prolog size 9, PerfScore 235.00, instruction count 95, allocated bytes for code 262 (MethodHash=a3fdd794) for method Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
 ; ============================================================
 

+9 (+3.56%) : 114808.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer1[ubyte]):this (FullOpts)

@@ -9,34 +9,33 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T04] ( 10, 16.50)     ref  ->  esi         this class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]>
-;  V01 arg1         [V01,T08] (  4,  6.50)     ref  ->  [ebp-0x18]  class-hnd single-def <System.Collections.Generic.IComparer`1[ubyte]>
+;  V01 arg1         [V01,T13] (  4,  6.50)     ref  ->  [ebp-0x20]  class-hnd single-def <System.Collections.Generic.IComparer`1[ubyte]>
 ;  V02 loc0         [V02,T03] ( 10, 23   )     int  ->  ebx        
 ;  V03 loc1         [V03,T00] ( 10, 30.50)     int  ->  [ebp-0x10] 
-;  V04 tmp0         [V04,T06] (  2, 16   )     int  ->  ecx         "impAppendStmt"
+;  V04 tmp0         [V04,T06] (  2, 16   )     int  ->  [ebp-0x14]  spill-single-def "impAppendStmt"
 ;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-;  V06 tmp2         [V06,T22] (  2,  2   )     ref  ->  edx         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+;  V06 tmp2         [V06,T21] (  2,  2   )     ref  ->  edx         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
 ;  V07 tmp3         [V07,T01] (  3, 24   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-;* V08 tmp4         [V08,T18] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-;  V09 tmp5         [V09,T09] (  3, 12   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
-;  V10 tmp6         [V10,T17] (  2,  8   )   ubyte  ->  edx         "Inlining Arg"
-;  V11 tmp7         [V11,T16] (  2,  8   )     ref  ->  eax         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+;* V08 tmp4         [V08,T17] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+;  V09 tmp5         [V09,T07] (  3, 12   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
+;  V10 tmp6         [V10,T16] (  2,  8   )   ubyte  ->  edx         "Inlining Arg"
+;  V11 tmp7         [V11,T14] (  2,  8   )     ref  ->  eax         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[ubyte]>
 ;* V13 tmp9         [V13    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V14 tmp10        [V14,T23] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V14 tmp10        [V14,T22] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
 ;  V15 tmp11        [V15,T02] (  3, 24   )     ref  ->  edi         "arr expr"
-;  V16 tmp12        [V16,T05] (  2, 16   )     ref  ->  ecx         "arr expr"
-;* V17 tmp13        [V17,T19] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V18 tmp14        [V18,T07] (  2, 16   )     int  ->  edx         "argument with side effect"
-;  V19 tmp15        [V19,T10] (  3, 12   )     ref  ->  edx         "arr expr"
-;  V20 tmp16        [V20,T11] (  3, 12   )     ref  ->  ecx         "arr expr"
-;  V21 cse0         [V21,T21] (  3,  2.50)     int  ->  ecx         "CSE - conservative"
-;  V22 cse1         [V22,T12] (  2,  8   )     ref  ->  ecx         "CSE - moderate"
-;  V23 cse2         [V23,T14] (  3, 12   )     int  ->  edx         "CSE - moderate"
-;  V24 cse3         [V24,T13] (  3, 12   )     ref  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
-;  V25 cse4         [V25,T20] (  3,  6   )     ref  ->  ecx         "CSE - conservative"
-;  V26 cse5         [V26,T15] (  3, 12   )     int  ->  [ebp-0x14]  spill-single-def "CSE - moderate"
+;  V16 tmp12        [V16,T05] (  2, 16   )     ref  ->  edx         "arr expr"
+;  V17 tmp13        [V17,T08] (  3, 12   )     ref  ->  edx         "arr expr"
+;  V18 tmp14        [V18,T15] (  2,  8   )     ref  ->  ecx         "arr expr"
+;  V19 cse0         [V19,T20] (  3,  2.50)     int  ->  ecx         "CSE - moderate"
+;  V20 cse1         [V20,T09] (  2,  8   )     ref  ->  ecx         "CSE - moderate"
+;  V21 cse2         [V21,T11] (  3, 12   )     int  ->  edx         "CSE - moderate"
+;  V22 cse3         [V22,T10] (  3, 12   )     ref  ->  [ebp-0x24]  spill-single-def "CSE - moderate"
+;  V23 cse4         [V23,T18] (  3,  6   )     ref  ->  ecx         "CSE - moderate"
+;  V24 cse5         [V24,T12] (  3, 12   )     int  ->  [ebp-0x18]  spill-single-def "CSE - moderate"
+;  V25 cse6         [V25,T19] (  3,  6   )     int  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 24
 
 G_M10347_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -44,7 +43,7 @@ G_M10347_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 16
+       sub      esp, 24
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
@@ -73,7 +72,7 @@ G_M10347_IG04:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
        ; gcrRegs +[edx]
        mov      edx, gword ptr [edx+0x04]
        push     ecx
-       mov      gword ptr [ebp-0x18], edi
+       mov      gword ptr [ebp-0x20], edi
        ; GC ptr vars +{V01}
        push     edi
        mov      ecx, edx
@@ -97,35 +96,36 @@ G_M10347_IG05:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        cmp      ebx, edx
        jge      G_M10347_IG11
        mov      ecx, gword ptr [ecx+0x04]
-       mov      gword ptr [ebp-0x1C], ecx
-       ; GC ptr vars +{V24}
+       mov      gword ptr [ebp-0x24], ecx
+       ; GC ptr vars +{V22}
        mov      edi, ecx
        ; gcrRegs +[edi]
        mov      ecx, dword ptr [edi+0x04]
        ; gcrRegs -[ecx]
-       mov      dword ptr [ebp-0x14], ecx
+       mov      dword ptr [ebp-0x18], ecx
        cmp      ebx, ecx
        jae      G_M10347_IG10
        movzx    ecx, byte  ptr [edi+ebx+0x08]
+       mov      dword ptr [ebp-0x14], ecx
        cmp      eax, edx
        jge      G_M10347_IG11
-       mov      edx, ecx
-       mov      ecx, gword ptr [ebp-0x1C]
-       ; gcrRegs +[ecx]
-       cmp      eax, dword ptr [ebp-0x14]
+       mov      edx, gword ptr [ebp-0x24]
+       ; gcrRegs +[edx]
+       cmp      eax, dword ptr [ebp-0x18]
        jae      SHORT G_M10347_IG10
        mov      dword ptr [ebp-0x10], eax
-       movzx    ecx, byte  ptr [ecx+eax+0x08]
-       ; gcrRegs -[ecx]
-       push     ecx
-       mov      ecx, gword ptr [ebp-0x18]
+       movzx    edx, byte  ptr [edx+eax+0x08]
+       ; gcrRegs -[edx]
+       push     edx
+       mov      ecx, gword ptr [ebp-0x20]
        ; gcrRegs +[ecx]
-       ; GC ptr vars -{V24}
+       mov      edx, dword ptr [ebp-0x14]
+       ; GC ptr vars -{V22}
        call     [<unknown method>]
        ; gcrRegs -[ecx edi]
        test     eax, eax
        jge      SHORT G_M10347_IG07
-                       ;; size=81 bbWeight=4 PerfScore 118.00
+                       ;; size=85 bbWeight=4 PerfScore 125.00
 G_M10347_IG06:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        inc      ebx
        mov      ecx, gword ptr [esi+0x04]
@@ -136,7 +136,9 @@ G_M10347_IG06:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      ecx, gword ptr [ecx+0x04]
        mov      edx, ecx
        ; gcrRegs +[edx]
-       cmp      edi, dword ptr [edx+0x04]
+       mov      eax, dword ptr [edx+0x04]
+       mov      dword ptr [ebp-0x1C], eax
+       cmp      edi, eax
        jae      SHORT G_M10347_IG10
        movzx    edx, byte  ptr [edx+edi+0x08]
        ; gcrRegs -[edx]
@@ -144,11 +146,11 @@ G_M10347_IG06:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcrRegs +[eax]
        cmp      ebx, dword ptr [eax+0x08]
        jge      SHORT G_M10347_IG11
-       cmp      ebx, dword ptr [ecx+0x04]
+       cmp      ebx, dword ptr [ebp-0x1C]
        jae      SHORT G_M10347_IG10
        mov      byte  ptr [ecx+ebx+0x08], dl
        mov      dword ptr [ebp-0x10], edi
-                       ;; size=47 bbWeight=2 PerfScore 55.00
+                       ;; size=52 bbWeight=2 PerfScore 53.50
 G_M10347_IG07:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax ecx]
        mov      edi, dword ptr [ebp-0x10]
@@ -185,6 +187,6 @@ G_M10347_IG11:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 253, prolog size 9, PerfScore 229.50, instruction count 92, allocated bytes for code 253 (MethodHash=a3fdd794) for method Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
+; Total bytes of code 262, prolog size 9, PerfScore 235.00, instruction count 95, allocated bytes for code 262 (MethodHash=a3fdd794) for method Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
 ; ============================================================
 

+22 (+7.24%) : 201709.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)

@@ -8,28 +8,26 @@
 ; 4 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  4,  6   )   byref  ->  [ebp-0x18]  this single-def
+;  V00 this         [V00,T05] (  4,  6   )   byref  ->  [ebp-0x28]  this single-def
 ;  V01 arg1         [V01,T02] ( 11, 20   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig]>
-;  V02 arg2         [V02,T08] (  4,  8   )     ref  ->  ebx         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
+;  V02 arg2         [V02,T06] (  4,  8   )     ref  ->  ebx         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
 ;  V03 loc0         [V03,T01] ( 13, 25.50)     int  ->  [ebp-0x10] 
 ;  V04 loc1         [V04,T00] ( 16, 43   )     int  ->  [ebp-0x14] 
-;  V05 loc2         [V05,T15] (  3,  6   )     int  ->  eax        
-;  V06 tmp0         [V06,T09] (  2,  8   )     ref  ->  edi         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-;  V07 tmp1         [V07,T10] (  2,  8   )     ref  ->  edx         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-;  V08 tmp2         [V08,T04] (  3, 12   )     ref  ->  edi         "arr expr"
-;  V09 tmp3         [V09,T05] (  3, 12   )     ref  ->  ecx         "arr expr"
-;* V10 tmp4         [V10,T18] (  0,  0   )   byref  ->  zero-ref    "argument with side effect"
-;  V11 tmp5         [V11,T11] (  2,  8   )     ref  ->  edi         "argument with side effect"
-;  V12 tmp6         [V12,T06] (  3, 12   )     ref  ->  edx         "arr expr"
-;  V13 tmp7         [V13,T07] (  3, 12   )     ref  ->  ecx         "arr expr"
-;* V14 tmp8         [V14,T19] (  0,  0   )   byref  ->  zero-ref    "argument with side effect"
-;  V15 tmp9         [V15,T12] (  2,  8   )     ref  ->  edx         "argument with side effect"
-;  V16 cse0         [V16,T16] (  3,  6   )     int  ->  ecx         "CSE - conservative"
-;  V17 cse1         [V17,T13] (  3,  6   )     ref  ->  [ebp-0x1C]  spill-single-def "CSE - conservative"
-;  V18 cse2         [V18,T17] (  3,  6   )     int  ->  ecx         "CSE - conservative"
-;  V19 cse3         [V19,T14] (  3,  6   )     ref  ->  [ebp-0x20]  spill-single-def "CSE - conservative"
+;  V05 loc2         [V05,T13] (  3,  6   )     int  ->  eax        
+;  V06 tmp0         [V06,T07] (  2,  8   )     ref  ->  edi         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+;  V07 tmp1         [V07,T08] (  2,  8   )     ref  ->  edx         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+;  V08 tmp2         [V08,T03] (  3, 12   )     ref  ->  edi         "arr expr"
+;  V09 tmp3         [V09,T09] (  2,  8   )     ref  ->  ecx         "arr expr"
+;  V10 tmp4         [V10,T04] (  3, 12   )     ref  ->  edx         "arr expr"
+;  V11 tmp5         [V11,T10] (  2,  8   )     ref  ->  ecx         "arr expr"
+;  V12 cse0         [V12,T14] (  3,  6   )     int  ->  [ebp-0x18]  spill-single-def "CSE - moderate"
+;  V13 cse1         [V13,T11] (  3,  6   )     ref  ->  [ebp-0x2C]  spill-single-def "CSE - moderate"
+;  V14 cse2         [V14,T15] (  3,  6   )     int  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
+;  V15 cse3         [V15,T12] (  3,  6   )     ref  ->  [ebp-0x30]  spill-single-def "CSE - moderate"
+;  V16 cse4         [V16,T16] (  3,  6   )     int  ->  [ebp-0x20]  spill-single-def "CSE - moderate"
+;  V17 cse5         [V17,T17] (  3,  6   )     int  ->  [ebp-0x24]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 36
 
 G_M40378_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -37,15 +35,15 @@ G_M40378_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 20
-       mov      bword ptr [ebp-0x18], ecx
+       sub      esp, 36
+       mov      bword ptr [ebp-0x28], ecx
        ; GC ptr vars +{V00}
        mov      esi, edx
        ; gcrRegs +[esi]
        mov      ebx, gword ptr [ebp+0x08]
        ; gcrRegs +[ebx]
                        ;; size=17 bbWeight=1 PerfScore 6.75
-G_M40378_IG02:        ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG02:        ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        cmp      dword ptr [esi+0x08], 1
        jne      SHORT G_M40378_IG05
                        ;; size=6 bbWeight=1 PerfScore 4.00
@@ -62,9 +60,9 @@ G_M40378_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG05:        ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG05:        ; bbWeight=0.50, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ebx esi]
-       ; GC ptr vars +{V00 V03}
+       ; GC ptr vars +{V00 V05}
        xor      eax, eax
        mov      edx, 1
        cmp      dword ptr [esi+0x08], 1
@@ -76,21 +74,25 @@ G_M40378_IG06:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
                        ;; size=4 bbWeight=4 PerfScore 5.00
 G_M40378_IG07:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, dword ptr [esi+0x08]
+       mov      dword ptr [ebp-0x18], ecx
        cmp      eax, ecx
        jae      G_M40378_IG24
        mov      edi, gword ptr [esi+0x04]
        ; gcrRegs +[edi]
-       mov      gword ptr [ebp-0x1C], edi
-       ; GC ptr vars +{V17}
-       cmp      eax, dword ptr [edi+0x04]
+       mov      gword ptr [ebp-0x2C], edi
+       ; GC ptr vars +{V13}
+       mov      ecx, dword ptr [edi+0x04]
+       mov      dword ptr [ebp-0x20], ecx
+       cmp      eax, ecx
        jae      G_M40378_IG23
        mov      dword ptr [ebp-0x10], eax
        mov      edi, gword ptr [edi+4*eax+0x08]
+       mov      ecx, dword ptr [ebp-0x18]
        cmp      edx, ecx
        jae      G_M40378_IG24
-       mov      ecx, gword ptr [ebp-0x1C]
+       mov      ecx, gword ptr [ebp-0x2C]
        ; gcrRegs +[ecx]
-       cmp      edx, dword ptr [ecx+0x04]
+       cmp      edx, dword ptr [ebp-0x20]
        jae      G_M40378_IG23
        mov      dword ptr [ebp-0x14], edx
        push     gword ptr [ecx+4*edx+0x08]
@@ -99,12 +101,12 @@ G_M40378_IG07:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        ; gcr arg push 1
        push     gword ptr [ebx+0x10]
        ; gcr arg push 2
-       mov      ecx, bword ptr [ebp-0x18]
+       mov      ecx, bword ptr [ebp-0x28]
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
        mov      edx, edi
        ; gcrRegs +[edx]
-       ; GC ptr vars -{V03 V17}
+       ; GC ptr vars -{V05 V13}
        call     [<unknown method>]
        ; gcrRegs -[edx edi]
        ; byrRegs -[ecx]
@@ -113,7 +115,7 @@ G_M40378_IG07:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        jne      SHORT G_M40378_IG09
        mov      edi, -1
        jmp      SHORT G_M40378_IG12
-                       ;; size=88 bbWeight=2 PerfScore 68.50
+                       ;; size=99 bbWeight=2 PerfScore 71.00
 G_M40378_IG08:        ; bbWeight=0.25, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        mov      edi, eax
        jmp      SHORT G_M40378_IG13
@@ -154,9 +156,9 @@ G_M40378_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG16:        ; bbWeight=2, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M40378_IG16:        ; bbWeight=2, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs +[ebx esi]
-       ; GC ptr vars +{V00 V03}
+       ; GC ptr vars +{V00 V05}
        mov      eax, edi
        jmp      G_M40378_IG06
                        ;; size=7 bbWeight=2 PerfScore 4.50
@@ -172,20 +174,24 @@ G_M40378_IG18:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
                        ;; size=4 bbWeight=4 PerfScore 5.00
 G_M40378_IG19:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, dword ptr [esi+0x08]
+       mov      dword ptr [ebp-0x1C], ecx
        cmp      edi, ecx
        jae      SHORT G_M40378_IG24
        mov      edx, gword ptr [esi+0x04]
        ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x20], edx
-       ; GC ptr vars +{V19}
-       cmp      edi, dword ptr [edx+0x04]
+       mov      gword ptr [ebp-0x30], edx
+       ; GC ptr vars +{V15}
+       mov      ecx, dword ptr [edx+0x04]
+       mov      dword ptr [ebp-0x24], ecx
+       cmp      edi, ecx
        jae      SHORT G_M40378_IG23
        mov      edx, gword ptr [edx+4*edi+0x08]
+       mov      ecx, dword ptr [ebp-0x1C]
        cmp      eax, ecx
        jae      SHORT G_M40378_IG24
-       mov      ecx, gword ptr [ebp-0x20]
+       mov      ecx, gword ptr [ebp-0x30]
        ; gcrRegs +[ecx]
-       cmp      eax, dword ptr [ecx+0x04]
+       cmp      eax, dword ptr [ebp-0x24]
        jae      SHORT G_M40378_IG23
        mov      dword ptr [ebp-0x14], eax
        push     gword ptr [ecx+4*eax+0x08]
@@ -194,10 +200,10 @@ G_M40378_IG19:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        ; gcr arg push 1
        push     gword ptr [ebx+0x10]
        ; gcr arg push 2
-       mov      ecx, bword ptr [ebp-0x18]
+       mov      ecx, bword ptr [ebp-0x28]
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
-       ; GC ptr vars -{V03 V19}
+       ; GC ptr vars -{V05 V15}
        call     [<unknown method>]
        ; gcrRegs -[edx]
        ; byrRegs -[ecx]
@@ -205,7 +211,7 @@ G_M40378_IG19:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        test     eax, eax
        mov      eax, dword ptr [ebp-0x14]
        jge      SHORT G_M40378_IG14
-                       ;; size=63 bbWeight=2 PerfScore 63.50
+                       ;; size=74 bbWeight=2 PerfScore 66.00
 G_M40378_IG20:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        inc      eax
        cmp      eax, dword ptr [esi+0x08]
@@ -232,6 +238,6 @@ G_M40378_IG24:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 304, prolog size 17, PerfScore 216.56, instruction count 114, allocated bytes for code 304 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
+; Total bytes of code 326, prolog size 17, PerfScore 221.56, instruction count 122, allocated bytes for code 326 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
 ; ============================================================
 

libraries_tests.run.windows.x86.Release.mch

-48 (-23.41%) : 391316.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (Tier0-FullOpts)

@@ -8,24 +8,22 @@
 ; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] (  8, 12   )     ref  ->  esi         this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
+;  V00 this         [V00,T05] (  8, 12   )     ref  ->  esi         this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
 ;* V01 arg1         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Xml.Xsl.XsltContext>
-;  V02 arg2         [V02,T08] (  7, 11   )     ref  ->  [ebp+0x0C]  class-hnd single-def <System.Object[]>
+;  V02 arg2         [V02,T06] (  8, 11.04)     ref  ->  edi         class-hnd single-def <System.Object[]>
 ;* V03 arg3         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Xml.XPath.XPathNavigator>
-;  V04 loc0         [V04,T03] ( 11, 19   )     int  ->  ebx        
+;  V04 loc0         [V04,T00] ( 22, 39.04)     int  ->  ebx        
 ;* V05 tmp0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;* V06 tmp1         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
 ;* V07 tmp2         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Object>
 ;  V08 tmp3         [V08,T01] (  6, 24   )     ref  ->  eax         "arr expr"
-;  V09 tmp4         [V09,T02] (  6, 24   )     ref  ->  edi         "arr expr"
-;  V10 tmp5         [V10,T05] (  4, 16   )     ref  ->  ecx         "argument with side effect"
-;  V11 tmp6         [V11,T06] (  4, 16   )     int  ->  eax         "argument with side effect"
-;  V12 tmp7         [V12,T00] ( 15, 56.08)     int  ->  [ebp-0x10]  "argument with side effect"
-;  V13 tmp8         [V13,T04] (  5, 16.08)     ref  ->  eax         "argument with side effect"
-;  V14 tmp9         [V14,T09] (  3,  6   )     ref  ->  ecx         single-def "argument with side effect"
-;  V15 tmp10        [V15,T10] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
+;  V09 tmp4         [V09,T02] (  6, 24   )     ref  ->  eax         "arr expr"
+;  V10 tmp5         [V10,T03] (  4, 16   )     ref  ->  ecx         "argument with side effect"
+;  V11 tmp6         [V11,T04] (  4, 16   )     int  ->  edx         "argument with side effect"
+;  V12 tmp7         [V12,T07] (  3,  6   )     ref  ->  ecx         single-def "argument with side effect"
+;  V13 tmp8         [V13,T08] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M50779_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -33,86 +31,69 @@ G_M50779_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       push     eax
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, gword ptr [ebp+0x0C]
        ; gcrRegs +[edi]
-                       ;; size=12 bbWeight=1 PerfScore 6.50
+                       ;; size=11 bbWeight=1 PerfScore 5.50
 G_M50779_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ebx, dword ptr [edi+0x04]
        dec      ebx
-       js       G_M50779_IG06
+       js       SHORT G_M50779_IG06
        cmp      dword ptr [edi+0x04], ebx
        jle      SHORT G_M50779_IG05
-                       ;; size=15 bbWeight=1 PerfScore 7.25
+                       ;; size=11 bbWeight=1 PerfScore 7.25
 G_M50779_IG03:        ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp+0x0C], edi
-       mov      eax, edi
-       ; gcrRegs +[eax]
-       mov      edx, ebx
-       mov      ecx, gword ptr [eax+4*edx+0x08]
+       mov      ecx, gword ptr [edi+4*ebx+0x08]
        ; gcrRegs +[ecx]
        mov      eax, gword ptr [esi+0x04]
-       cmp      edx, dword ptr [eax+0x04]
-       jae      G_M50779_IG08
-       mov      eax, dword ptr [eax+4*edx+0x08]
-       ; gcrRegs -[eax]
-       mov      edi, gword ptr [esi+0x1C]
-       cmp      edx, dword ptr [edi+0x04]
-       jae      G_M50779_IG08
-       mov      dword ptr [ebp-0x10], edx
-       push     gword ptr [edi+4*edx+0x08]
-       mov      edx, eax
+       ; gcrRegs +[eax]
+       cmp      ebx, dword ptr [eax+0x04]
+       jae      SHORT G_M50779_IG08
+       mov      edx, dword ptr [eax+4*ebx+0x08]
+       mov      eax, gword ptr [esi+0x1C]
+       cmp      ebx, dword ptr [eax+0x04]
+       jae      SHORT G_M50779_IG08
+       push     gword ptr [eax+4*ebx+0x08]
        call     [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
-       ; gcrRegs -[ecx edi] +[eax]
+       ; gcrRegs -[ecx]
        push     eax
-       mov      edx, dword ptr [ebp-0x10]
-       mov      ecx, gword ptr [ebp+0x0C]
+       mov      edx, ebx
+       mov      ecx, edi
        ; gcrRegs +[ecx]
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[eax ecx]
        dec      ebx
-       mov      edi, gword ptr [ebp+0x0C]
-       ; gcrRegs +[edi]
        jns      SHORT G_M50779_IG03
-                       ;; size=72 bbWeight=3.96 PerfScore 118.80
+                       ;; size=47 bbWeight=3.96 PerfScore 98.01
 G_M50779_IG04:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        jmp      SHORT G_M50779_IG06
                        ;; size=2 bbWeight=1 PerfScore 2.00
 G_M50779_IG05:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp+0x0C], edi
-       mov      eax, edi
-       ; gcrRegs +[eax]
-       mov      edx, ebx
-       cmp      edx, dword ptr [eax+0x04]
+       cmp      ebx, dword ptr [edi+0x04]
        jae      SHORT G_M50779_IG08
-       mov      ecx, gword ptr [eax+4*edx+0x08]
+       mov      ecx, gword ptr [edi+4*ebx+0x08]
        ; gcrRegs +[ecx]
        mov      eax, gword ptr [esi+0x04]
-       cmp      edx, dword ptr [eax+0x04]
+       ; gcrRegs +[eax]
+       cmp      ebx, dword ptr [eax+0x04]
        jae      SHORT G_M50779_IG08
-       mov      eax, dword ptr [eax+4*edx+0x08]
-       ; gcrRegs -[eax]
-       mov      edi, gword ptr [esi+0x1C]
-       cmp      edx, dword ptr [edi+0x04]
+       mov      edx, dword ptr [eax+4*ebx+0x08]
+       mov      eax, gword ptr [esi+0x1C]
+       cmp      ebx, dword ptr [eax+0x04]
        jae      SHORT G_M50779_IG08
-       mov      dword ptr [ebp-0x10], edx
-       push     gword ptr [edi+4*edx+0x08]
-       mov      edx, eax
+       push     gword ptr [eax+4*ebx+0x08]
        call     [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
-       ; gcrRegs -[ecx edi] +[eax]
+       ; gcrRegs -[ecx]
        push     eax
-       mov      edx, dword ptr [ebp-0x10]
-       mov      ecx, gword ptr [ebp+0x0C]
+       mov      edx, ebx
+       mov      ecx, edi
        ; gcrRegs +[ecx]
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[eax ecx]
        dec      ebx
-       mov      edi, gword ptr [ebp+0x0C]
-       ; gcrRegs +[edi]
        jns      SHORT G_M50779_IG05
-                       ;; size=69 bbWeight=0.04 PerfScore 1.36
+                       ;; size=52 bbWeight=0.04 PerfScore 1.15
 G_M50779_IG06:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        mov      ecx, gword ptr [esi+0x18]
        ; gcrRegs +[ecx]
@@ -128,19 +109,18 @@ G_M50779_IG06:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
        ; gcrRegs -[ecx edx esi edi] +[eax]
                        ;; size=21 bbWeight=1 PerfScore 15.00
 G_M50779_IG07:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      8
-                       ;; size=8 bbWeight=1 PerfScore 4.50
+                       ;; size=7 bbWeight=1 PerfScore 4.00
 G_M50779_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[eax]
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 205, prolog size 7, PerfScore 155.41, instruction count 77, allocated bytes for code 205 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (Tier0-FullOpts)
+; Total bytes of code 157, prolog size 6, PerfScore 132.91, instruction count 63, allocated bytes for code 157 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (Tier0-FullOpts)
 ; ============================================================
 

-18 (-22.50%) : 4217.dasm - Xunit.Sdk.TestCaseMessage:.ctor(Xunit.Abstractions.ITestCase):this (Instrumented Tier0)

@@ -8,29 +8,21 @@
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [ebp-0x04]  do-not-enreg[] this class-hnd <Xunit.Sdk.TestCaseMessage>
 ;  V01 arg1         [V01    ] (  1,  1   )     ref  ->  [ebp-0x08]  do-not-enreg[] class-hnd <Xunit.Abstractions.ITestCase>
 ;  V02 tmp0         [V02    ] (  1,  1   )     ref  ->  [ebp-0x0C]  do-not-enreg[] must-init "handle histogram profile tmp"
-;  V03 tmp1         [V03    ] (  1,  1   )     ref  ->  [ebp-0x10]  do-not-enreg[] must-init "argument with side effect"
-;  V04 tmp2         [V04    ] (  1,  1   )     ref  ->  [ebp-0x14]  do-not-enreg[] must-init "argument with side effect"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 12
 
 G_M39804_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 20
+       sub      esp, 12
        xor      eax, eax
        mov      dword ptr [ebp-0x0C], eax
-       mov      dword ptr [ebp-0x10], eax
-       mov      dword ptr [ebp-0x14], eax
        mov      gword ptr [ebp-0x04], ecx
        mov      gword ptr [ebp-0x08], edx
-                       ;; size=23 bbWeight=1 PerfScore 6.75
+                       ;; size=17 bbWeight=1 PerfScore 4.75
 G_M39804_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       mov      ecx, gword ptr [ebp-0x04]
+       mov      ecx, gword ptr [ebp-0x08]
        ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x14], ecx
-       mov      ecx, gword ptr [ebp-0x08]
-       mov      gword ptr [ebp-0x10], ecx
-       mov      ecx, gword ptr [ebp-0x08]
        mov      gword ptr [ebp-0x0C], ecx
        mov      ecx, gword ptr [ebp-0x0C]
        mov      edx, 0xD1FFAB1E
@@ -41,19 +33,19 @@ G_M39804_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        call     [<unknown method>]
        ; gcrRegs -[ecx] +[eax]
        push     eax
-       mov      edx, gword ptr [ebp-0x10]
+       mov      edx, gword ptr [ebp-0x08]
        ; gcrRegs +[edx]
-       mov      ecx, gword ptr [ebp-0x14]
+       mov      ecx, gword ptr [ebp-0x04]
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
-                       ;; size=53 bbWeight=1 PerfScore 18.25
+                       ;; size=41 bbWeight=1 PerfScore 14.25
 G_M39804_IG03:        ; bbWeight=1, epilog, nogc, extend
        mov      esp, ebp
        pop      ebp
        ret      
                        ;; size=4 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 80, prolog size 17, PerfScore 26.75, instruction count 27, allocated bytes for code 80 (MethodHash=ff666483) for method Xunit.Sdk.TestCaseMessage:.ctor(Xunit.Abstractions.ITestCase):this (Instrumented Tier0)
+; Total bytes of code 62, prolog size 11, PerfScore 20.75, instruction count 21, allocated bytes for code 62 (MethodHash=ff666483) for method Xunit.Sdk.TestCaseMessage:.ctor(Xunit.Abstractions.ITestCase):this (Instrumented Tier0)
 ; ============================================================
 

-18 (-22.50%) : 194238.dasm - System.Collections.Immutable.ValuesCollectionAccessor2[int,ubyte]:.ctor(System.Collections.Immutable.IImmutableDictionary2[int,ubyte]):this (Instrumented Tier0)

@@ -8,29 +8,21 @@
 ;  V00 this         [V00    ] (  1,  1   )     ref  ->  [ebp-0x04]  do-not-enreg[] this class-hnd <System.Collections.Immutable.ValuesCollectionAccessor`2[int,ubyte]>
 ;  V01 arg1         [V01    ] (  1,  1   )     ref  ->  [ebp-0x08]  do-not-enreg[] class-hnd <System.Collections.Immutable.IImmutableDictionary`2[int,ubyte]>
 ;  V02 tmp0         [V02    ] (  1,  1   )     ref  ->  [ebp-0x0C]  do-not-enreg[] must-init "handle histogram profile tmp"
-;  V03 tmp1         [V03    ] (  1,  1   )     ref  ->  [ebp-0x10]  do-not-enreg[] must-init "argument with side effect"
-;  V04 tmp2         [V04    ] (  1,  1   )     ref  ->  [ebp-0x14]  do-not-enreg[] must-init "argument with side effect"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 12
 
 G_M10333_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
-       sub      esp, 20
+       sub      esp, 12
        xor      eax, eax
        mov      dword ptr [ebp-0x0C], eax
-       mov      dword ptr [ebp-0x10], eax
-       mov      dword ptr [ebp-0x14], eax
        mov      gword ptr [ebp-0x04], ecx
        mov      gword ptr [ebp-0x08], edx
-                       ;; size=23 bbWeight=1 PerfScore 6.75
+                       ;; size=17 bbWeight=1 PerfScore 4.75
 G_M10333_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       mov      ecx, gword ptr [ebp-0x04]
+       mov      ecx, gword ptr [ebp-0x08]
        ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x14], ecx
-       mov      ecx, gword ptr [ebp-0x08]
-       mov      gword ptr [ebp-0x10], ecx
-       mov      ecx, gword ptr [ebp-0x08]
        mov      gword ptr [ebp-0x0C], ecx
        mov      ecx, gword ptr [ebp-0x0C]
        mov      edx, 0xD1FFAB1E
@@ -41,19 +33,19 @@ G_M10333_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        call     [<unknown method>]
        ; gcrRegs -[ecx] +[eax]
        push     eax
-       mov      edx, gword ptr [ebp-0x10]
+       mov      edx, gword ptr [ebp-0x08]
        ; gcrRegs +[edx]
-       mov      ecx, gword ptr [ebp-0x14]
+       mov      ecx, gword ptr [ebp-0x04]
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
-                       ;; size=53 bbWeight=1 PerfScore 18.25
+                       ;; size=41 bbWeight=1 PerfScore 14.25
 G_M10333_IG03:        ; bbWeight=1, epilog, nogc, extend
        mov      esp, ebp
        pop      ebp
        ret      
                        ;; size=4 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 80, prolog size 17, PerfScore 26.75, instruction count 27, allocated bytes for code 80 (MethodHash=2cb2d7a2) for method System.Collections.Immutable.ValuesCollectionAccessor`2[int,ubyte]:.ctor(System.Collections.Immutable.IImmutableDictionary`2[int,ubyte]):this (Instrumented Tier0)
+; Total bytes of code 62, prolog size 11, PerfScore 20.75, instruction count 21, allocated bytes for code 62 (MethodHash=2cb2d7a2) for method System.Collections.Immutable.ValuesCollectionAccessor`2[int,ubyte]:.ctor(System.Collections.Immutable.IImmutableDictionary`2[int,ubyte]):this (Instrumented Tier0)
 ; ============================================================
 

+14 (+6.33%) : 365211.dasm - System.Net.SSPIAuthType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)

@@ -11,23 +11,21 @@
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.Net.SSPIAuthType>
 ;  V01 arg1         [V01,T01] (  3,  3.01)     ref  ->  esi         class-hnd single-def <System.Net.Security.SafeDeleteContext>
-;  V02 arg2         [V02,T08] (  1,  1.01)     int  ->  [ebp+0x18]  single-def
-;  V03 arg3         [V03,T06] (  2,  2.02)  struct ( 8) [ebp+0x10]  do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
-;  V04 arg4         [V04,T07] (  5,  1.02)     ref  ->  ebx         class-hnd single-def <System.Type>
-;  V05 arg5         [V05,T05] (  4,  2.03)   byref  ->  edi         single-def
+;  V02 arg2         [V02,T06] (  1,  1.01)     int  ->  [ebp+0x18]  single-def
+;  V03 arg3         [V03,T04] (  2,  2.02)  struct ( 8) [ebp+0x10]  do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
+;  V04 arg4         [V04,T05] (  5,  1.02)     ref  ->  ebx         class-hnd single-def <System.Type>
+;  V05 arg5         [V05,T03] (  4,  2.03)   byref  ->  edi         single-def
 ;* V06 loc0         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;  V07 loc1         [V07    ] (  1,  1.01)   byref  ->  [ebp-0x10]  do-not-enreg[P] must-init pinned
-;  V08 tmp0         [V08,T12] (  2,  0   )     ref  ->  esi         class-hnd exact single-def "non-inline candidate call" <<unknown class>>
-;  V09 tmp1         [V09,T10] (  3,  0   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V10 tmp2         [V10,T11] (  3,  0   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeCertContext>
-;  V11 tmp3         [V11,T09] (  3,  0.13)     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeContextBuffer_SECURITY>
+;  V08 tmp0         [V08,T10] (  2,  0   )     ref  ->  esi         class-hnd exact single-def "non-inline candidate call" <<unknown class>>
+;  V09 tmp1         [V09,T08] (  3,  0   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V10 tmp2         [V10,T09] (  3,  0   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeCertContext>
+;  V11 tmp3         [V11,T07] (  3,  0.13)     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeContextBuffer_SECURITY>
 ;* V12 tmp4         [V12    ] (  0,  0   )   byref  ->  zero-ref    "Inline return value spill temp"
 ;  V13 tmp5         [V13,T00] (  5,  5.05)   byref  ->  ecx         "Inline stloc first use temp"
-;  V14 tmp6         [V14,T13] (  2,  0   )     ref  ->  edx         single-def "argument with side effect"
-;  V15 tmp7         [V15,T14] (  2,  0   )     ref  ->  esi         single-def "argument with side effect"
-;  V16 tmp8         [V16,T03] (  2,  4.04)     int  ->  ecx         "Cast away GC"
-;  V17 tmp9         [V17,T02] (  2,  4.04)     ref  ->  esi         single-def "argument with side effect"
-;  V18 tmp10        [V18,T04] (  2,  4.04)     int  ->  edx         "argument with side effect"
+;  V14 tmp6         [V14,T11] (  2,  0   )     ref  ->  edx         single-def "argument with side effect"
+;  V15 tmp7         [V15,T12] (  2,  0   )     ref  ->  esi         single-def "argument with side effect"
+;  V16 tmp8         [V16,T02] (  2,  4.04)     int  ->  ecx         "Cast away GC"
 ;
 ; Lcl frame size = 4
 
@@ -52,8 +50,9 @@ G_M23053_IG02:        ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        ; gcrRegs +[ecx]
        mov      gword ptr [edi], ecx
        test     ebx, ebx
+       mov      eax, dword ptr [ebp+0x18]
        jne      SHORT G_M23053_IG05
-                       ;; size=8 bbWeight=1 PerfScore 2.50
+                       ;; size=11 bbWeight=1 PerfScore 3.50
 G_M23053_IG03:        ; bbWeight=1.01, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
        ; gcrRegs -[ecx ebx]
        xor      ecx, ecx
@@ -61,16 +60,16 @@ G_M23053_IG03:        ; bbWeight=1.01, gcrefRegs=00000040 {esi}, byrefRegs=00000
        cmp      dword ptr [ebp+0x14], 0
        cmovne   ecx, bword ptr [ebp+0x10]
        mov      bword ptr [ebp-0x10], ecx
-       mov      edx, dword ptr [ebp+0x18]
        push     ecx
        push     gword ptr [edi]
        mov      ecx, esi
        ; gcrRegs +[ecx]
        ; byrRegs -[ecx]
+       mov      edx, eax
        call     [<unknown method>]
        ; gcrRegs -[ecx esi]
        ; byrRegs -[edi]
-                       ;; size=27 bbWeight=1.01 PerfScore 12.62
+                       ;; size=26 bbWeight=1.01 PerfScore 11.86
 G_M23053_IG04:        ; bbWeight=1.01, epilog, nogc, extend
        pop      ecx
        pop      ebx
@@ -84,6 +83,7 @@ G_M23053_IG05:        ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=00000048 {e
        ; byrRegs +[edi]
        cmp      ebx, 0xD1FFAB1E
        jne      SHORT G_M23053_IG06
+       mov      dword ptr [ebp+0x18], eax
        mov      ecx, 0xD1FFAB1E      ; System.Net.Security.SafeFreeContextBuffer_SECURITY
        call     CORINFO_HELP_NEWFAST
        ; gcrRegs -[ebx] +[eax]
@@ -100,12 +100,14 @@ G_M23053_IG05:        ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=00000048 {e
        call     CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
        ; gcrRegs -[ebx]
        ; byrRegs -[edx]
+       mov      eax, dword ptr [ebp+0x18]
        jmp      SHORT G_M23053_IG03
-                       ;; size=41 bbWeight=0.02 PerfScore 0.23
+                       ;; size=47 bbWeight=0.02 PerfScore 0.28
 G_M23053_IG06:        ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, byref, isz
        ; gcrRegs +[ebx]
        cmp      ebx, 0xD1FFAB1E
        jne      SHORT G_M23053_IG07
+       mov      dword ptr [ebp+0x18], eax
        mov      ecx, 0xD1FFAB1E      ; System.Net.Security.SafeFreeCertContext
        call     CORINFO_HELP_NEWFAST
        ; gcrRegs -[ebx] +[eax]
@@ -122,8 +124,9 @@ G_M23053_IG06:        ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        call     CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
        ; gcrRegs -[ebx]
        ; byrRegs -[edx]
+       mov      eax, dword ptr [ebp+0x18]
        jmp      SHORT G_M23053_IG03
-                       ;; size=41 bbWeight=0 PerfScore 0.00
+                       ;; size=47 bbWeight=0 PerfScore 0.00
 G_M23053_IG07:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi] +[ebx]
        ; byrRegs -[edi]
@@ -167,6 +170,6 @@ G_M23053_IG07:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        int3     
                        ;; size=76 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 221, prolog size 12, PerfScore 28.64, instruction count 77, allocated bytes for code 221 (MethodHash=f870a5f2) for method System.Net.SSPIAuthType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
+; Total bytes of code 235, prolog size 12, PerfScore 28.93, instruction count 82, allocated bytes for code 235 (MethodHash=f870a5f2) for method System.Net.SSPIAuthType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
 ; ============================================================
 

+22 (+7.24%) : 86260.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (Tier0-FullOpts)

@@ -8,28 +8,26 @@
 ; 4 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  4,  6   )   byref  ->  [ebp-0x18]  this single-def
+;  V00 this         [V00,T05] (  4,  6   )   byref  ->  [ebp-0x28]  this single-def
 ;  V01 arg1         [V01,T02] ( 11, 20   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig]>
-;  V02 arg2         [V02,T08] (  4,  8   )     ref  ->  ebx         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
+;  V02 arg2         [V02,T06] (  4,  8   )     ref  ->  ebx         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
 ;  V03 loc0         [V03,T01] ( 13, 25.50)     int  ->  [ebp-0x10] 
 ;  V04 loc1         [V04,T00] ( 16, 43   )     int  ->  [ebp-0x14] 
-;  V05 loc2         [V05,T15] (  3,  6   )     int  ->  eax        
-;  V06 tmp0         [V06,T09] (  2,  8   )     ref  ->  edi         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-;  V07 tmp1         [V07,T10] (  2,  8   )     ref  ->  edx         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-;  V08 tmp2         [V08,T04] (  3, 12   )     ref  ->  edi         "arr expr"
-;  V09 tmp3         [V09,T05] (  3, 12   )     ref  ->  ecx         "arr expr"
-;* V10 tmp4         [V10,T18] (  0,  0   )   byref  ->  zero-ref    "argument with side effect"
-;  V11 tmp5         [V11,T11] (  2,  8   )     ref  ->  edi         "argument with side effect"
-;  V12 tmp6         [V12,T06] (  3, 12   )     ref  ->  edx         "arr expr"
-;  V13 tmp7         [V13,T07] (  3, 12   )     ref  ->  ecx         "arr expr"
-;* V14 tmp8         [V14,T19] (  0,  0   )   byref  ->  zero-ref    "argument with side effect"
-;  V15 tmp9         [V15,T12] (  2,  8   )     ref  ->  edx         "argument with side effect"
-;  V16 cse0         [V16,T16] (  3,  6   )     int  ->  ecx         "CSE - conservative"
-;  V17 cse1         [V17,T13] (  3,  6   )     ref  ->  [ebp-0x1C]  spill-single-def "CSE - conservative"
-;  V18 cse2         [V18,T17] (  3,  6   )     int  ->  ecx         "CSE - conservative"
-;  V19 cse3         [V19,T14] (  3,  6   )     ref  ->  [ebp-0x20]  spill-single-def "CSE - conservative"
+;  V05 loc2         [V05,T13] (  3,  6   )     int  ->  eax        
+;  V06 tmp0         [V06,T07] (  2,  8   )     ref  ->  edi         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+;  V07 tmp1         [V07,T08] (  2,  8   )     ref  ->  edx         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+;  V08 tmp2         [V08,T03] (  3, 12   )     ref  ->  edi         "arr expr"
+;  V09 tmp3         [V09,T09] (  2,  8   )     ref  ->  ecx         "arr expr"
+;  V10 tmp4         [V10,T04] (  3, 12   )     ref  ->  edx         "arr expr"
+;  V11 tmp5         [V11,T10] (  2,  8   )     ref  ->  ecx         "arr expr"
+;  V12 cse0         [V12,T14] (  3,  6   )     int  ->  [ebp-0x18]  spill-single-def "CSE - moderate"
+;  V13 cse1         [V13,T11] (  3,  6   )     ref  ->  [ebp-0x2C]  spill-single-def "CSE - moderate"
+;  V14 cse2         [V14,T15] (  3,  6   )     int  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
+;  V15 cse3         [V15,T12] (  3,  6   )     ref  ->  [ebp-0x30]  spill-single-def "CSE - moderate"
+;  V16 cse4         [V16,T16] (  3,  6   )     int  ->  [ebp-0x20]  spill-single-def "CSE - moderate"
+;  V17 cse5         [V17,T17] (  3,  6   )     int  ->  [ebp-0x24]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 36
 
 G_M40378_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -37,15 +35,15 @@ G_M40378_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 20
-       mov      bword ptr [ebp-0x18], ecx
+       sub      esp, 36
+       mov      bword ptr [ebp-0x28], ecx
        ; GC ptr vars +{V00}
        mov      esi, edx
        ; gcrRegs +[esi]
        mov      ebx, gword ptr [ebp+0x08]
        ; gcrRegs +[ebx]
                        ;; size=17 bbWeight=1 PerfScore 6.75
-G_M40378_IG02:        ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG02:        ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        cmp      dword ptr [esi+0x08], 1
        jne      SHORT G_M40378_IG05
                        ;; size=6 bbWeight=1 PerfScore 4.00
@@ -62,9 +60,9 @@ G_M40378_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG05:        ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG05:        ; bbWeight=0.50, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ebx esi]
-       ; GC ptr vars +{V00 V03}
+       ; GC ptr vars +{V00 V05}
        xor      eax, eax
        mov      edx, 1
        cmp      dword ptr [esi+0x08], 1
@@ -76,21 +74,25 @@ G_M40378_IG06:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
                        ;; size=4 bbWeight=4 PerfScore 5.00
 G_M40378_IG07:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, dword ptr [esi+0x08]
+       mov      dword ptr [ebp-0x18], ecx
        cmp      eax, ecx
        jae      G_M40378_IG24
        mov      edi, gword ptr [esi+0x04]
        ; gcrRegs +[edi]
-       mov      gword ptr [ebp-0x1C], edi
-       ; GC ptr vars +{V17}
-       cmp      eax, dword ptr [edi+0x04]
+       mov      gword ptr [ebp-0x2C], edi
+       ; GC ptr vars +{V13}
+       mov      ecx, dword ptr [edi+0x04]
+       mov      dword ptr [ebp-0x20], ecx
+       cmp      eax, ecx
        jae      G_M40378_IG23
        mov      dword ptr [ebp-0x10], eax
        mov      edi, gword ptr [edi+4*eax+0x08]
+       mov      ecx, dword ptr [ebp-0x18]
        cmp      edx, ecx
        jae      G_M40378_IG24
-       mov      ecx, gword ptr [ebp-0x1C]
+       mov      ecx, gword ptr [ebp-0x2C]
        ; gcrRegs +[ecx]
-       cmp      edx, dword ptr [ecx+0x04]
+       cmp      edx, dword ptr [ebp-0x20]
        jae      G_M40378_IG23
        mov      dword ptr [ebp-0x14], edx
        push     gword ptr [ecx+4*edx+0x08]
@@ -99,12 +101,12 @@ G_M40378_IG07:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        ; gcr arg push 1
        push     gword ptr [ebx+0x10]
        ; gcr arg push 2
-       mov      ecx, bword ptr [ebp-0x18]
+       mov      ecx, bword ptr [ebp-0x28]
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
        mov      edx, edi
        ; gcrRegs +[edx]
-       ; GC ptr vars -{V03 V17}
+       ; GC ptr vars -{V05 V13}
        call     [<unknown method>]
        ; gcrRegs -[edx edi]
        ; byrRegs -[ecx]
@@ -113,7 +115,7 @@ G_M40378_IG07:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        jne      SHORT G_M40378_IG09
        mov      edi, -1
        jmp      SHORT G_M40378_IG12
-                       ;; size=88 bbWeight=2 PerfScore 68.50
+                       ;; size=99 bbWeight=2 PerfScore 71.00
 G_M40378_IG08:        ; bbWeight=0.25, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        mov      edi, eax
        jmp      SHORT G_M40378_IG13
@@ -154,9 +156,9 @@ G_M40378_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG16:        ; bbWeight=2, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M40378_IG16:        ; bbWeight=2, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs +[ebx esi]
-       ; GC ptr vars +{V00 V03}
+       ; GC ptr vars +{V00 V05}
        mov      eax, edi
        jmp      G_M40378_IG06
                        ;; size=7 bbWeight=2 PerfScore 4.50
@@ -172,20 +174,24 @@ G_M40378_IG18:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
                        ;; size=4 bbWeight=4 PerfScore 5.00
 G_M40378_IG19:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, dword ptr [esi+0x08]
+       mov      dword ptr [ebp-0x1C], ecx
        cmp      edi, ecx
        jae      SHORT G_M40378_IG24
        mov      edx, gword ptr [esi+0x04]
        ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x20], edx
-       ; GC ptr vars +{V19}
-       cmp      edi, dword ptr [edx+0x04]
+       mov      gword ptr [ebp-0x30], edx
+       ; GC ptr vars +{V15}
+       mov      ecx, dword ptr [edx+0x04]
+       mov      dword ptr [ebp-0x24], ecx
+       cmp      edi, ecx
        jae      SHORT G_M40378_IG23
        mov      edx, gword ptr [edx+4*edi+0x08]
+       mov      ecx, dword ptr [ebp-0x1C]
        cmp      eax, ecx
        jae      SHORT G_M40378_IG24
-       mov      ecx, gword ptr [ebp-0x20]
+       mov      ecx, gword ptr [ebp-0x30]
        ; gcrRegs +[ecx]
-       cmp      eax, dword ptr [ecx+0x04]
+       cmp      eax, dword ptr [ebp-0x24]
        jae      SHORT G_M40378_IG23
        mov      dword ptr [ebp-0x14], eax
        push     gword ptr [ecx+4*eax+0x08]
@@ -194,10 +200,10 @@ G_M40378_IG19:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        ; gcr arg push 1
        push     gword ptr [ebx+0x10]
        ; gcr arg push 2
-       mov      ecx, bword ptr [ebp-0x18]
+       mov      ecx, bword ptr [ebp-0x28]
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
-       ; GC ptr vars -{V03 V19}
+       ; GC ptr vars -{V05 V15}
        call     [<unknown method>]
        ; gcrRegs -[edx]
        ; byrRegs -[ecx]
@@ -205,7 +211,7 @@ G_M40378_IG19:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        test     eax, eax
        mov      eax, dword ptr [ebp-0x14]
        jge      SHORT G_M40378_IG14
-                       ;; size=63 bbWeight=2 PerfScore 63.50
+                       ;; size=74 bbWeight=2 PerfScore 66.00
 G_M40378_IG20:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        inc      eax
        cmp      eax, dword ptr [esi+0x08]
@@ -232,6 +238,6 @@ G_M40378_IG24:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 304, prolog size 17, PerfScore 216.56, instruction count 114, allocated bytes for code 304 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (Tier0-FullOpts)
+; Total bytes of code 326, prolog size 17, PerfScore 221.56, instruction count 122, allocated bytes for code 326 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (Tier0-FullOpts)
 ; ============================================================
 

+18 (+7.86%) : 365126.dasm - System.Net.SSPISecureChannelType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)

@@ -11,23 +11,21 @@
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.Net.SSPISecureChannelType>
 ;  V01 arg1         [V01,T01] (  3,  3.01)     ref  ->  esi         class-hnd single-def <System.Net.Security.SafeDeleteContext>
-;  V02 arg2         [V02,T09] (  1,  1.01)     int  ->  [ebp+0x18]  single-def
-;  V03 arg3         [V03,T07] (  2,  2.02)  struct ( 8) [ebp+0x10]  do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
-;  V04 arg4         [V04,T08] (  5,  1.41)     ref  ->  ebx         class-hnd single-def <System.Type>
-;  V05 arg5         [V05,T06] (  4,  2.22)   byref  ->  edi         single-def
+;  V02 arg2         [V02,T07] (  1,  1.01)     int  ->  [ebp+0x18]  single-def
+;  V03 arg3         [V03,T05] (  2,  2.02)  struct ( 8) [ebp+0x10]  do-not-enreg[SF] ld-addr-op single-def <System.Span`1[ubyte]>
+;  V04 arg4         [V04,T06] (  5,  1.41)     ref  ->  ebx         class-hnd single-def <System.Type>
+;  V05 arg5         [V05,T04] (  4,  2.22)   byref  ->  edi         single-def
 ;* V06 loc0         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;  V07 loc1         [V07    ] (  1,  1.01)   byref  ->  [ebp-0x10]  do-not-enreg[P] must-init pinned
-;  V08 tmp0         [V08,T12] (  2,  0   )     ref  ->  esi         class-hnd exact single-def "non-inline candidate call" <<unknown class>>
-;  V09 tmp1         [V09,T10] (  3,  0   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V10 tmp2         [V10,T05] (  6,  2.47)     ref  ->  eax         class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeCertContext>
-;  V11 tmp3         [V11,T11] (  3,  0   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeContextBuffer_SECURITY>
+;  V08 tmp0         [V08,T10] (  2,  0   )     ref  ->  esi         class-hnd exact single-def "non-inline candidate call" <<unknown class>>
+;  V09 tmp1         [V09,T08] (  3,  0   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V10 tmp2         [V10,T03] (  6,  2.47)     ref  ->  eax         class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeCertContext>
+;  V11 tmp3         [V11,T09] (  3,  0   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <System.Net.Security.SafeFreeContextBuffer_SECURITY>
 ;* V12 tmp4         [V12    ] (  0,  0   )   byref  ->  zero-ref    "Inline return value spill temp"
 ;  V13 tmp5         [V13,T00] (  5,  5.05)   byref  ->  ecx         "Inline stloc first use temp"
-;  V14 tmp6         [V14,T13] (  2,  0   )     ref  ->  edx         single-def "argument with side effect"
-;  V15 tmp7         [V15,T14] (  2,  0   )     ref  ->  esi         single-def "argument with side effect"
-;  V16 tmp8         [V16,T03] (  2,  4.04)     int  ->  ecx         "Cast away GC"
-;  V17 tmp9         [V17,T02] (  2,  4.04)     ref  ->  esi         single-def "argument with side effect"
-;  V18 tmp10        [V18,T04] (  2,  4.04)     int  ->  edx         "argument with side effect"
+;  V14 tmp6         [V14,T11] (  2,  0   )     ref  ->  edx         single-def "argument with side effect"
+;  V15 tmp7         [V15,T12] (  2,  0   )     ref  ->  esi         single-def "argument with side effect"
+;  V16 tmp8         [V16,T02] (  2,  4.04)     int  ->  ecx         "Cast away GC"
 ;
 ; Lcl frame size = 4
 
@@ -52,8 +50,9 @@ G_M45105_IG02:        ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        ; gcrRegs +[ecx]
        mov      gword ptr [edi], ecx
        test     ebx, ebx
+       mov      eax, dword ptr [ebp+0x18]
        jne      SHORT G_M45105_IG05
-                       ;; size=8 bbWeight=1 PerfScore 2.50
+                       ;; size=11 bbWeight=1 PerfScore 3.50
 G_M45105_IG03:        ; bbWeight=1.01, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
        ; gcrRegs -[ecx ebx]
        xor      ecx, ecx
@@ -61,16 +60,16 @@ G_M45105_IG03:        ; bbWeight=1.01, gcrefRegs=00000040 {esi}, byrefRegs=00000
        cmp      dword ptr [ebp+0x14], 0
        cmovne   ecx, bword ptr [ebp+0x10]
        mov      bword ptr [ebp-0x10], ecx
-       mov      edx, dword ptr [ebp+0x18]
        push     ecx
        push     gword ptr [edi]
        mov      ecx, esi
        ; gcrRegs +[ecx]
        ; byrRegs -[ecx]
+       mov      edx, eax
        call     [<unknown method>]
        ; gcrRegs -[ecx esi]
        ; byrRegs -[edi]
-                       ;; size=27 bbWeight=1.01 PerfScore 12.62
+                       ;; size=26 bbWeight=1.01 PerfScore 11.86
 G_M45105_IG04:        ; bbWeight=1.01, epilog, nogc, extend
        pop      ecx
        pop      ebx
@@ -83,9 +82,10 @@ G_M45105_IG05:        ; bbWeight=0.21, gcVars=00000000 {}, gcrefRegs=00000048 {e
        ; gcrRegs +[ebx esi]
        ; byrRegs +[edi]
        cmp      ebx, 0xD1FFAB1E
-       je       SHORT G_M45105_IG07
+       je       G_M45105_IG07
        cmp      ebx, 0xD1FFAB1E
        jne      SHORT G_M45105_IG06
+       mov      dword ptr [ebp+0x18], eax
        mov      ecx, 0xD1FFAB1E      ; System.Net.Security.SafeFreeCertContext
        call     CORINFO_HELP_NEWFAST
        ; gcrRegs -[ebx] +[eax]
@@ -99,8 +99,9 @@ G_M45105_IG05:        ; bbWeight=0.21, gcVars=00000000 {}, gcrefRegs=00000048 {e
        call     CORINFO_HELP_CHECKED_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
+       mov      eax, dword ptr [ebp+0x18]
        jmp      SHORT G_M45105_IG03
-                       ;; size=55 bbWeight=0.21 PerfScore 2.32
+                       ;; size=65 bbWeight=0.21 PerfScore 2.73
 G_M45105_IG06:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi] +[ebx]
        ; byrRegs -[edi]
@@ -145,6 +146,7 @@ G_M45105_IG06:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
 G_M45105_IG07:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, byref
        ; gcrRegs +[esi]
        ; byrRegs +[edi]
+       mov      dword ptr [ebp+0x18], eax
        mov      ecx, 0xD1FFAB1E      ; System.Net.Security.SafeFreeContextBuffer_SECURITY
        call     CORINFO_HELP_NEWFAST
        ; gcrRegs +[eax]
@@ -161,9 +163,10 @@ G_M45105_IG07:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000080
        call     CORINFO_HELP_CHECKED_ASSIGN_REF_EBX
        ; gcrRegs -[ebx]
        ; byrRegs -[edx]
+       mov      eax, dword ptr [ebp+0x18]
        jmp      G_M45105_IG03
-                       ;; size=36 bbWeight=0 PerfScore 0.00
+                       ;; size=42 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 229, prolog size 12, PerfScore 30.72, instruction count 76, allocated bytes for code 229 (MethodHash=f4584fce) for method System.Net.SSPISecureChannelType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
+; Total bytes of code 247, prolog size 12, PerfScore 31.38, instruction count 81, allocated bytes for code 247 (MethodHash=f4584fce) for method System.Net.SSPISecureChannelType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
 ; ============================================================
 

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-48 (-23.41%) : 174980.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)

@@ -8,24 +8,22 @@
 ; 1 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] (  8, 12   )     ref  ->  esi         this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
+;  V00 this         [V00,T05] (  8, 12   )     ref  ->  esi         this class-hnd single-def <System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension>
 ;* V01 arg1         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Xml.Xsl.XsltContext>
-;  V02 arg2         [V02,T08] (  7, 11   )     ref  ->  [ebp+0x0C]  class-hnd single-def <System.Object[]>
+;  V02 arg2         [V02,T06] (  8, 11.04)     ref  ->  edi         class-hnd single-def <System.Object[]>
 ;* V03 arg3         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Xml.XPath.XPathNavigator>
-;  V04 loc0         [V04,T03] ( 11, 19   )     int  ->  ebx        
+;  V04 loc0         [V04,T00] ( 22, 39.04)     int  ->  ebx        
 ;* V05 tmp0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;* V06 tmp1         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
 ;* V07 tmp2         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Object>
 ;  V08 tmp3         [V08,T01] (  6, 24   )     ref  ->  eax         "arr expr"
-;  V09 tmp4         [V09,T02] (  6, 24   )     ref  ->  edi         "arr expr"
-;  V10 tmp5         [V10,T05] (  4, 16   )     ref  ->  ecx         "argument with side effect"
-;  V11 tmp6         [V11,T06] (  4, 16   )     int  ->  eax         "argument with side effect"
-;  V12 tmp7         [V12,T00] ( 15, 56.08)     int  ->  [ebp-0x10]  "argument with side effect"
-;  V13 tmp8         [V13,T04] (  5, 16.08)     ref  ->  eax         "argument with side effect"
-;  V14 tmp9         [V14,T09] (  3,  6   )     ref  ->  ecx         single-def "argument with side effect"
-;  V15 tmp10        [V15,T10] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
+;  V09 tmp4         [V09,T02] (  6, 24   )     ref  ->  eax         "arr expr"
+;  V10 tmp5         [V10,T03] (  4, 16   )     ref  ->  ecx         "argument with side effect"
+;  V11 tmp6         [V11,T04] (  4, 16   )     int  ->  edx         "argument with side effect"
+;  V12 tmp7         [V12,T07] (  3,  6   )     ref  ->  ecx         single-def "argument with side effect"
+;  V13 tmp8         [V13,T08] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M50779_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -33,86 +31,69 @@ G_M50779_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       push     eax
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, gword ptr [ebp+0x0C]
        ; gcrRegs +[edi]
-                       ;; size=12 bbWeight=1 PerfScore 6.50
+                       ;; size=11 bbWeight=1 PerfScore 5.50
 G_M50779_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ebx, dword ptr [edi+0x04]
        dec      ebx
-       js       G_M50779_IG06
+       js       SHORT G_M50779_IG06
        cmp      dword ptr [edi+0x04], ebx
        jle      SHORT G_M50779_IG05
-                       ;; size=15 bbWeight=1 PerfScore 7.25
+                       ;; size=11 bbWeight=1 PerfScore 7.25
 G_M50779_IG03:        ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp+0x0C], edi
-       mov      eax, edi
-       ; gcrRegs +[eax]
-       mov      edx, ebx
-       mov      ecx, gword ptr [eax+4*edx+0x08]
+       mov      ecx, gword ptr [edi+4*ebx+0x08]
        ; gcrRegs +[ecx]
        mov      eax, gword ptr [esi+0x04]
-       cmp      edx, dword ptr [eax+0x04]
-       jae      G_M50779_IG08
-       mov      eax, dword ptr [eax+4*edx+0x08]
-       ; gcrRegs -[eax]
-       mov      edi, gword ptr [esi+0x1C]
-       cmp      edx, dword ptr [edi+0x04]
-       jae      G_M50779_IG08
-       mov      dword ptr [ebp-0x10], edx
-       push     gword ptr [edi+4*edx+0x08]
-       mov      edx, eax
+       ; gcrRegs +[eax]
+       cmp      ebx, dword ptr [eax+0x04]
+       jae      SHORT G_M50779_IG08
+       mov      edx, dword ptr [eax+4*ebx+0x08]
+       mov      eax, gword ptr [esi+0x1C]
+       cmp      ebx, dword ptr [eax+0x04]
+       jae      SHORT G_M50779_IG08
+       push     gword ptr [eax+4*ebx+0x08]
        call     [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
-       ; gcrRegs -[ecx edi] +[eax]
+       ; gcrRegs -[ecx]
        push     eax
-       mov      edx, dword ptr [ebp-0x10]
-       mov      ecx, gword ptr [ebp+0x0C]
+       mov      edx, ebx
+       mov      ecx, edi
        ; gcrRegs +[ecx]
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[eax ecx]
        dec      ebx
-       mov      edi, gword ptr [ebp+0x0C]
-       ; gcrRegs +[edi]
        jns      SHORT G_M50779_IG03
-                       ;; size=72 bbWeight=3.96 PerfScore 118.80
+                       ;; size=47 bbWeight=3.96 PerfScore 98.01
 G_M50779_IG04:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        jmp      SHORT G_M50779_IG06
                        ;; size=2 bbWeight=1 PerfScore 2.00
 G_M50779_IG05:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp+0x0C], edi
-       mov      eax, edi
-       ; gcrRegs +[eax]
-       mov      edx, ebx
-       cmp      edx, dword ptr [eax+0x04]
+       cmp      ebx, dword ptr [edi+0x04]
        jae      SHORT G_M50779_IG08
-       mov      ecx, gword ptr [eax+4*edx+0x08]
+       mov      ecx, gword ptr [edi+4*ebx+0x08]
        ; gcrRegs +[ecx]
        mov      eax, gword ptr [esi+0x04]
-       cmp      edx, dword ptr [eax+0x04]
+       ; gcrRegs +[eax]
+       cmp      ebx, dword ptr [eax+0x04]
        jae      SHORT G_M50779_IG08
-       mov      eax, dword ptr [eax+4*edx+0x08]
-       ; gcrRegs -[eax]
-       mov      edi, gword ptr [esi+0x1C]
-       cmp      edx, dword ptr [edi+0x04]
+       mov      edx, dword ptr [eax+4*ebx+0x08]
+       mov      eax, gword ptr [esi+0x1C]
+       cmp      ebx, dword ptr [eax+0x04]
        jae      SHORT G_M50779_IG08
-       mov      dword ptr [ebp-0x10], edx
-       push     gword ptr [edi+4*edx+0x08]
-       mov      edx, eax
+       push     gword ptr [eax+4*ebx+0x08]
        call     [System.Xml.Xsl.XsltOld.XsltCompileContext+XsltFunctionImpl:ConvertToXPathType(System.Object,int,System.Type):System.Object]
-       ; gcrRegs -[ecx edi] +[eax]
+       ; gcrRegs -[ecx]
        push     eax
-       mov      edx, dword ptr [ebp-0x10]
-       mov      ecx, gword ptr [ebp+0x0C]
+       mov      edx, ebx
+       mov      ecx, edi
        ; gcrRegs +[ecx]
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[eax ecx]
        dec      ebx
-       mov      edi, gword ptr [ebp+0x0C]
-       ; gcrRegs +[edi]
        jns      SHORT G_M50779_IG05
-                       ;; size=69 bbWeight=0.04 PerfScore 1.36
+                       ;; size=52 bbWeight=0.04 PerfScore 1.15
 G_M50779_IG06:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        mov      ecx, gword ptr [esi+0x18]
        ; gcrRegs +[ecx]
@@ -128,19 +109,18 @@ G_M50779_IG06:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
        ; gcrRegs -[ecx edx esi edi] +[eax]
                        ;; size=21 bbWeight=1 PerfScore 15.00
 G_M50779_IG07:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      8
-                       ;; size=8 bbWeight=1 PerfScore 4.50
+                       ;; size=7 bbWeight=1 PerfScore 4.00
 G_M50779_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[eax]
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 205, prolog size 7, PerfScore 155.41, instruction count 77, allocated bytes for code 205 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
+; Total bytes of code 157, prolog size 6, PerfScore 132.91, instruction count 63, allocated bytes for code 157 (MethodHash=355039a4) for method System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
 ; ============================================================
 

-13 (-21.31%) : 70919.dasm - System.Collections.Immutable.Tests.ImmutableArrayTest+<>cDisplayClass128_1:b20():System.Object:this (FullOpts)

@@ -11,19 +11,15 @@
 ;  V01 tmp0         [V01,T01] (  3,  6   )     ref  ->  edi         class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
 ;  V02 tmp1         [V02,T03] (  3,  3   )     ref  ->  ecx         single-def "Field obj"
 ;  V03 tmp2         [V03,T02] (  2,  4   )   byref  ->  ecx         single-def "argument with side effect"
-;  TEMP_01                                   byref  ->  [esp+0x00]
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M54012_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     edi
        push     esi
-       push     eax
-       xor      eax, eax
-       mov      dword ptr [esp], eax
        mov      esi, ecx
        ; gcrRegs +[esi]
-                       ;; size=10 bbWeight=1 PerfScore 4.50
+                       ;; size=4 bbWeight=1 PerfScore 2.25
 G_M54012_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        mov      ecx, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableArray`1[int]
        call     CORINFO_HELP_NEWSFAST
@@ -31,9 +27,6 @@ G_M54012_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcr arg pop 0
        mov      edi, eax
        ; gcrRegs +[edi]
-       lea      edx, bword ptr [edi+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [esp], edx
        mov      ecx, gword ptr [esi+0x0C]
        ; gcrRegs +[ecx]
        cmp      byte  ptr [ecx], cl
@@ -44,26 +37,24 @@ G_M54012_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcr arg push 0
        xor      edx, edx
        ; gcrRegs +[edx]
-       ; byrRegs -[edx]
        call     [<unknown method>]
        ; gcrRegs -[edx esi]
        ; byrRegs -[ecx]
        ; gcr arg pop 1
-       mov      edx, bword ptr [esp]
+       lea      edx, bword ptr [edi+0x04]
        ; byrRegs +[edx]
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
        mov      eax, edi
        ; gcrRegs +[eax]
-                       ;; size=47 bbWeight=1 PerfScore 15.75
+                       ;; size=41 bbWeight=1 PerfScore 13.75
 G_M54012_IG03:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
        pop      esi
        pop      edi
        ret      
-                       ;; size=4 bbWeight=1 PerfScore 2.50
+                       ;; size=3 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 61, prolog size 8, PerfScore 22.75, instruction count 24, allocated bytes for code 64 (MethodHash=75bf2d03) for method System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
+; Total bytes of code 48, prolog size 2, PerfScore 18.00, instruction count 18, allocated bytes for code 48 (MethodHash=75bf2d03) for method System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
 ; ============================================================
 

-13 (-11.02%) : 17145.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>cDisplayClass60:<BoundsCheckThrowsIndexOutOfRangeException>b0():System.Object:this (FullOpts)

@@ -10,78 +10,69 @@
 ;
 ;  V00 this         [V00,T04] (  3,  3   )     ref  ->  ecx         this class-hnd single-def <System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0>
 ;  V01 tmp0         [V01,T02] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "Single-def Box Helper" <System.Net.Http.HPack.HeaderField>
-;  V02 tmp1         [V02,T00] (  6, 10   )     int  ->  [ebp-0x0C]  "Inlining Arg"
+;  V02 tmp1         [V02,T00] (  6, 10   )     int  ->  edi         "Inlining Arg"
 ;  V03 tmp2         [V03,T01] (  5,  9   )     ref  ->  esi         class-hnd exact single-def "Inlining Arg" <System.Net.Http.HPack.DynamicTable>
 ;  V04 tmp3         [V04,T05] (  3,  0   )     ref  ->  esi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V05 tmp4         [V05,T03] (  3,  6   )     ref  ->  ecx         single-def "arr expr"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M19023_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
        push     edi
        push     esi
-       push     eax
-                       ;; size=6 bbWeight=1 PerfScore 4.25
+                       ;; size=5 bbWeight=1 PerfScore 3.25
 G_M19023_IG02:        ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[ecx]
        mov      esi, gword ptr [ecx+0x04]
        ; gcrRegs +[esi]
        cmp      dword ptr [esi+0x10], 0
-       jle      SHORT G_M19023_IG08
+       jle      SHORT G_M19023_IG07
        mov      edi, dword ptr [esi+0x14]
        dec      edi
-       jns      SHORT G_M19023_IG06
+       jns      SHORT G_M19023_IG04
                        ;; size=15 bbWeight=1 PerfScore 9.25
 G_M19023_IG03:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ecx]
        mov      ecx, gword ptr [esi+0x04]
        ; gcrRegs +[ecx]
        add      edi, dword ptr [ecx+0x04]
-       mov      dword ptr [ebp-0x0C], edi
-                       ;; size=9 bbWeight=0.50 PerfScore 3.00
+                       ;; size=6 bbWeight=0.50 PerfScore 2.50
 G_M19023_IG04:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[ecx]
        mov      ecx, 0xD1FFAB1E      ; System.Net.Http.HPack.HeaderField
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
-       lea      edi, bword ptr [eax+0x04]
-       ; byrRegs +[edi]
        mov      ecx, gword ptr [esi+0x04]
        ; gcrRegs +[ecx]
-       mov      esi, dword ptr [ebp-0x0C]
-       ; gcrRegs -[esi]
-       cmp      esi, dword ptr [ecx+0x04]
-       jae      SHORT G_M19023_IG07
-       mov      edx, esi
+       cmp      edi, dword ptr [ecx+0x04]
+       jae      SHORT G_M19023_IG06
+       mov      edx, edi
        shl      edx, 4
        lea      esi, bword ptr [ecx+edx+0x08]
+       ; gcrRegs -[esi]
        ; byrRegs +[esi]
+       lea      edi, bword ptr [eax+0x04]
+       ; byrRegs +[edi]
        call     CORINFO_HELP_ASSIGN_BYREF
        ; gcrRegs -[ecx]
        call     CORINFO_HELP_ASSIGN_BYREF
        movsd    
        movsd    
-                       ;; size=45 bbWeight=1 PerfScore 14.50
+                       ;; size=42 bbWeight=1 PerfScore 13.50
 G_M19023_IG05:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
        pop      esi
        pop      edi
        pop      ebp
        ret      
-                       ;; size=5 bbWeight=1 PerfScore 3.00
-G_M19023_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[eax] +[esi]
+                       ;; size=4 bbWeight=1 PerfScore 2.50
+G_M19023_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[eax]
        ; byrRegs -[esi edi]
-       mov      dword ptr [ebp-0x0C], edi
-       jmp      SHORT G_M19023_IG04
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M19023_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi]
        call     CORINFO_HELP_RNGCHKFAIL
                        ;; size=5 bbWeight=0 PerfScore 0.00
-G_M19023_IG08:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M19023_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
@@ -98,6 +89,6 @@ G_M19023_IG08:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 118, prolog size 6, PerfScore 35.50, instruction count 44, allocated bytes for code 118 (MethodHash=b295b5b0) for method System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__0():System.Object:this (FullOpts)
+; Total bytes of code 105, prolog size 5, PerfScore 31.00, instruction count 38, allocated bytes for code 105 (MethodHash=b295b5b0) for method System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__0():System.Object:this (FullOpts)
 ; ============================================================
 

+8 (+6.72%) : 87959.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)

@@ -9,19 +9,17 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  5   )     ref  ->  esi         this class-hnd single-def <Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType>
-;  V01 loc0         [V01,T10] (  2,  2   )     ref  ->  eax         class-hnd single-def <<unknown class>>
-;  V02 tmp0         [V02,T05] (  2,  4   )     ref  ->  edi         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V01 loc0         [V01,T08] (  2,  2   )     ref  ->  eax         class-hnd single-def <<unknown class>>
+;  V02 tmp0         [V02,T02] (  3,  6   )     ref  ->  edi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V03 tmp1         [V03,T04] (  3,  4.25)     ref  ->  edx         single-def "CASTCLASS eval op1"
-;  V04 tmp2         [V04,T11] (  3,  1.25)     int  ->  ebx         "fgMakeTemp is creating a new local variable"
-;  V05 tmp3         [V05,T01] (  5,  6.75)     ref  ->  registers   class-hnd "spilling QMark2" <<unknown class>>
-;  V06 tmp4         [V06,T02] (  3,  6   )     ref  ->  ecx         single-def "arr expr"
-;  V07 tmp5         [V07,T06] (  2,  4   )     ref  ->  ebx         single-def "arr expr"
-;  V08 tmp6         [V08,T03] (  3,  6   )     ref  ->  edi         single-def "argument with side effect"
-;  V09 tmp7         [V09,T07] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
-;  V10 cse0         [V10,T08] (  3,  3   )     ref  ->  [ebp-0x14]  spill-single-def "CSE - moderate"
-;  V11 cse1         [V11,T09] (  3,  3   )     int  ->  [ebp-0x10]  spill-single-def "CSE - moderate"
+;  V04 tmp2         [V04,T09] (  3,  1.25)     int  ->  ebx         "fgMakeTemp is creating a new local variable"
+;  V05 tmp3         [V05,T01] (  5,  6.75)     ref  ->  [ebp-0x14]  class-hnd "spilling QMark2" <<unknown class>>
+;  V06 tmp4         [V06,T03] (  3,  6   )     ref  ->  ecx         single-def "arr expr"
+;  V07 tmp5         [V07,T05] (  2,  4   )     ref  ->  ebx         single-def "arr expr"
+;  V08 cse0         [V08,T06] (  3,  3   )     ref  ->  [ebp-0x18]  spill-single-def "CSE - moderate"
+;  V09 cse1         [V09,T07] (  3,  3   )     int  ->  [ebp-0x10]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M21808_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -29,7 +27,7 @@ G_M21808_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 8
+       sub      esp, 12
        mov      esi, ecx
        ; gcrRegs +[esi]
                        ;; size=11 bbWeight=1 PerfScore 4.75
@@ -43,50 +41,52 @@ G_M21808_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcrRegs +[edi]
        mov      ebx, gword ptr [esi+0x08]
        ; gcrRegs +[ebx]
-       mov      gword ptr [ebp-0x14], ebx
-       ; GC ptr vars +{V10}
+       mov      gword ptr [ebp-0x18], ebx
+       ; GC ptr vars +{V08}
        mov      ecx, ebx
        ; gcrRegs +[ecx]
        mov      eax, dword ptr [ecx+0x04]
        ; gcrRegs -[eax]
        mov      dword ptr [ebp-0x10], eax
        test     eax, eax
-       je       SHORT G_M21808_IG07
+       je       SHORT G_M21808_IG08
        mov      edx, gword ptr [ecx+0x08]
        ; gcrRegs +[edx]
        mov      ecx, edx
        test     ecx, ecx
-       je       SHORT G_M21808_IG05
+       je       SHORT G_M21808_IG07
                        ;; size=42 bbWeight=1 PerfScore 14.50
-G_M21808_IG03:        ; bbWeight=0.25, gcVars=00000100 {V10}, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M21808_IG03:        ; bbWeight=0.25, gcVars=00000040 {V08}, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[ebx]
        mov      ebx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [ecx], ebx
+       mov      gword ptr [ebp-0x14], ecx
+       ; GC ptr vars +{V05}
        je       SHORT G_M21808_IG05
-                       ;; size=9 bbWeight=0.25 PerfScore 1.06
+                       ;; size=12 bbWeight=0.25 PerfScore 1.31
 G_M21808_IG04:        ; bbWeight=0.12, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ecx]
+       ; GC ptr vars -{V05}
        mov      ecx, ebx
        call     CORINFO_HELP_CHKCASTCLASS_SPECIAL
        ; gcrRegs -[edx] +[eax]
-       mov      edx, eax
-       ; gcrRegs +[edx]
-       mov      ecx, edx
-       ; gcrRegs +[ecx]
-                       ;; size=11 bbWeight=0.12 PerfScore 0.22
-G_M21808_IG05:        ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[eax edx]
-       mov      edx, ecx
-       ; gcrRegs +[edx]
-       mov      ebx, gword ptr [ebp-0x14]
+       mov      gword ptr [ebp-0x14], eax
+       ; GC ptr vars +{V05}
+                       ;; size=10 bbWeight=0.12 PerfScore 0.28
+G_M21808_IG05:        ; bbWeight=1, gcVars=00000042 {V05 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[eax]
+       mov      ebx, gword ptr [ebp-0x18]
        ; gcrRegs +[ebx]
        cmp      dword ptr [ebp-0x10], 1
-       jbe      SHORT G_M21808_IG07
+       jbe      SHORT G_M21808_IG08
        push     gword ptr [ebx+0x0C]
        mov      ecx, edi
+       ; gcrRegs +[ecx]
+       mov      edx, gword ptr [ebp-0x14]
+       ; gcrRegs +[edx]
        mov      eax, dword ptr [edi]
        mov      eax, dword ptr [eax+0x34]
-       ; GC ptr vars -{V10}
+       ; GC ptr vars -{V05 V08}
        call     [eax+0x08]<unknown method>
        ; gcrRegs -[ecx edx ebx edi] +[eax]
        lea      edx, bword ptr [esi+0x18]
@@ -94,7 +94,7 @@ G_M21808_IG05:        ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax esi]
        ; byrRegs -[edx]
-                       ;; size=32 bbWeight=1 PerfScore 15.00
+                       ;; size=33 bbWeight=1 PerfScore 15.75
 G_M21808_IG06:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
@@ -103,11 +103,20 @@ G_M21808_IG06:        ; bbWeight=1, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=1 PerfScore 3.50
-G_M21808_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M21808_IG07:        ; bbWeight=0.50, gcVars=00000040 {V08}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs +[ecx esi edi]
+       ; GC ptr vars +{V06 V08}
+       mov      gword ptr [ebp-0x14], ecx
+       ; GC ptr vars +{V05}
+       jmp      SHORT G_M21808_IG05
+                       ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M21808_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[ecx esi edi]
+       ; GC ptr vars -{V05 V06 V08}
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 119, prolog size 9, PerfScore 39.03, instruction count 48, allocated bytes for code 119 (MethodHash=14a4aacf) for method Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)
+; Total bytes of code 127, prolog size 9, PerfScore 41.59, instruction count 50, allocated bytes for code 127 (MethodHash=14a4aacf) for method Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)
 ; ============================================================
 

+8 (+6.72%) : 87991.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)

@@ -9,19 +9,17 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  5   )     ref  ->  esi         this class-hnd single-def <Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor>
-;  V01 loc0         [V01,T10] (  2,  2   )     ref  ->  eax         class-hnd single-def <<unknown class>>
-;  V02 tmp0         [V02,T05] (  2,  4   )     ref  ->  edi         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V01 loc0         [V01,T08] (  2,  2   )     ref  ->  eax         class-hnd single-def <<unknown class>>
+;  V02 tmp0         [V02,T02] (  3,  6   )     ref  ->  edi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V03 tmp1         [V03,T04] (  3,  4.25)     ref  ->  edx         single-def "CASTCLASS eval op1"
-;  V04 tmp2         [V04,T11] (  3,  1.25)     int  ->  ebx         "fgMakeTemp is creating a new local variable"
-;  V05 tmp3         [V05,T01] (  5,  6.75)     ref  ->  registers   class-hnd "spilling QMark2" <<unknown class>>
-;  V06 tmp4         [V06,T02] (  3,  6   )     ref  ->  ecx         single-def "arr expr"
-;  V07 tmp5         [V07,T06] (  2,  4   )     ref  ->  ebx         single-def "arr expr"
-;  V08 tmp6         [V08,T03] (  3,  6   )     ref  ->  edi         single-def "argument with side effect"
-;  V09 tmp7         [V09,T07] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
-;  V10 cse0         [V10,T08] (  3,  3   )     ref  ->  [ebp-0x14]  spill-single-def "CSE - moderate"
-;  V11 cse1         [V11,T09] (  3,  3   )     int  ->  [ebp-0x10]  spill-single-def "CSE - moderate"
+;  V04 tmp2         [V04,T09] (  3,  1.25)     int  ->  ebx         "fgMakeTemp is creating a new local variable"
+;  V05 tmp3         [V05,T01] (  5,  6.75)     ref  ->  [ebp-0x14]  class-hnd "spilling QMark2" <<unknown class>>
+;  V06 tmp4         [V06,T03] (  3,  6   )     ref  ->  ecx         single-def "arr expr"
+;  V07 tmp5         [V07,T05] (  2,  4   )     ref  ->  ebx         single-def "arr expr"
+;  V08 cse0         [V08,T06] (  3,  3   )     ref  ->  [ebp-0x18]  spill-single-def "CSE - moderate"
+;  V09 cse1         [V09,T07] (  3,  3   )     int  ->  [ebp-0x10]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M17764_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -29,7 +27,7 @@ G_M17764_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 8
+       sub      esp, 12
        mov      esi, ecx
        ; gcrRegs +[esi]
                        ;; size=11 bbWeight=1 PerfScore 4.75
@@ -43,50 +41,52 @@ G_M17764_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcrRegs +[edi]
        mov      ebx, gword ptr [esi+0x08]
        ; gcrRegs +[ebx]
-       mov      gword ptr [ebp-0x14], ebx
-       ; GC ptr vars +{V10}
+       mov      gword ptr [ebp-0x18], ebx
+       ; GC ptr vars +{V08}
        mov      ecx, ebx
        ; gcrRegs +[ecx]
        mov      eax, dword ptr [ecx+0x04]
        ; gcrRegs -[eax]
        mov      dword ptr [ebp-0x10], eax
        test     eax, eax
-       je       SHORT G_M17764_IG07
+       je       SHORT G_M17764_IG08
        mov      edx, gword ptr [ecx+0x08]
        ; gcrRegs +[edx]
        mov      ecx, edx
        test     ecx, ecx
-       je       SHORT G_M17764_IG05
+       je       SHORT G_M17764_IG07
                        ;; size=42 bbWeight=1 PerfScore 14.50
-G_M17764_IG03:        ; bbWeight=0.25, gcVars=00000100 {V10}, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M17764_IG03:        ; bbWeight=0.25, gcVars=00000040 {V08}, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[ebx]
        mov      ebx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [ecx], ebx
+       mov      gword ptr [ebp-0x14], ecx
+       ; GC ptr vars +{V05}
        je       SHORT G_M17764_IG05
-                       ;; size=9 bbWeight=0.25 PerfScore 1.06
+                       ;; size=12 bbWeight=0.25 PerfScore 1.31
 G_M17764_IG04:        ; bbWeight=0.12, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ecx]
+       ; GC ptr vars -{V05}
        mov      ecx, ebx
        call     CORINFO_HELP_CHKCASTCLASS_SPECIAL
        ; gcrRegs -[edx] +[eax]
-       mov      edx, eax
-       ; gcrRegs +[edx]
-       mov      ecx, edx
-       ; gcrRegs +[ecx]
-                       ;; size=11 bbWeight=0.12 PerfScore 0.22
-G_M17764_IG05:        ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[eax edx]
-       mov      edx, ecx
-       ; gcrRegs +[edx]
-       mov      ebx, gword ptr [ebp-0x14]
+       mov      gword ptr [ebp-0x14], eax
+       ; GC ptr vars +{V05}
+                       ;; size=10 bbWeight=0.12 PerfScore 0.28
+G_M17764_IG05:        ; bbWeight=1, gcVars=00000042 {V05 V08}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[eax]
+       mov      ebx, gword ptr [ebp-0x18]
        ; gcrRegs +[ebx]
        cmp      dword ptr [ebp-0x10], 1
-       jbe      SHORT G_M17764_IG07
+       jbe      SHORT G_M17764_IG08
        push     gword ptr [ebx+0x0C]
        mov      ecx, edi
+       ; gcrRegs +[ecx]
+       mov      edx, gword ptr [ebp-0x14]
+       ; gcrRegs +[edx]
        mov      eax, dword ptr [edi]
        mov      eax, dword ptr [eax+0x34]
-       ; GC ptr vars -{V10}
+       ; GC ptr vars -{V05 V08}
        call     [eax+0x10]<unknown method>
        ; gcrRegs -[ecx edx ebx edi] +[eax]
        lea      edx, bword ptr [esi+0x18]
@@ -94,7 +94,7 @@ G_M17764_IG05:        ; bbWeight=1, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax esi]
        ; byrRegs -[edx]
-                       ;; size=32 bbWeight=1 PerfScore 15.00
+                       ;; size=33 bbWeight=1 PerfScore 15.75
 G_M17764_IG06:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
@@ -103,11 +103,20 @@ G_M17764_IG06:        ; bbWeight=1, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=1 PerfScore 3.50
-G_M17764_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M17764_IG07:        ; bbWeight=0.50, gcVars=00000040 {V08}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs +[ecx esi edi]
+       ; GC ptr vars +{V06 V08}
+       mov      gword ptr [ebp-0x14], ecx
+       ; GC ptr vars +{V05}
+       jmp      SHORT G_M17764_IG05
+                       ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M17764_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[ecx esi edi]
+       ; GC ptr vars -{V05 V06 V08}
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 119, prolog size 9, PerfScore 39.03, instruction count 48, allocated bytes for code 119 (MethodHash=34faba9b) for method Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)
+; Total bytes of code 127, prolog size 9, PerfScore 41.59, instruction count 50, allocated bytes for code 127 (MethodHash=34faba9b) for method Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)
 ; ============================================================
 

+22 (+7.24%) : 26145.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)

@@ -8,28 +8,26 @@
 ; 4 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  4,  6   )   byref  ->  [ebp-0x18]  this single-def
+;  V00 this         [V00,T05] (  4,  6   )   byref  ->  [ebp-0x28]  this single-def
 ;  V01 arg1         [V01,T02] ( 11, 20   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig]>
-;  V02 arg2         [V02,T08] (  4,  8   )     ref  ->  ebx         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
+;  V02 arg2         [V02,T06] (  4,  8   )     ref  ->  ebx         class-hnd single-def <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo>
 ;  V03 loc0         [V03,T01] ( 13, 25.50)     int  ->  [ebp-0x10] 
 ;  V04 loc1         [V04,T00] ( 16, 43   )     int  ->  [ebp-0x14] 
-;  V05 loc2         [V05,T15] (  3,  6   )     int  ->  eax        
-;  V06 tmp0         [V06,T09] (  2,  8   )     ref  ->  edi         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-;  V07 tmp1         [V07,T10] (  2,  8   )     ref  ->  edx         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
-;  V08 tmp2         [V08,T04] (  3, 12   )     ref  ->  edi         "arr expr"
-;  V09 tmp3         [V09,T05] (  3, 12   )     ref  ->  ecx         "arr expr"
-;* V10 tmp4         [V10,T18] (  0,  0   )   byref  ->  zero-ref    "argument with side effect"
-;  V11 tmp5         [V11,T11] (  2,  8   )     ref  ->  edi         "argument with side effect"
-;  V12 tmp6         [V12,T06] (  3, 12   )     ref  ->  edx         "arr expr"
-;  V13 tmp7         [V13,T07] (  3, 12   )     ref  ->  ecx         "arr expr"
-;* V14 tmp8         [V14,T19] (  0,  0   )   byref  ->  zero-ref    "argument with side effect"
-;  V15 tmp9         [V15,T12] (  2,  8   )     ref  ->  edx         "argument with side effect"
-;  V16 cse0         [V16,T16] (  3,  6   )     int  ->  ecx         "CSE - conservative"
-;  V17 cse1         [V17,T13] (  3,  6   )     ref  ->  [ebp-0x1C]  spill-single-def "CSE - conservative"
-;  V18 cse2         [V18,T17] (  3,  6   )     int  ->  ecx         "CSE - conservative"
-;  V19 cse3         [V19,T14] (  3,  6   )     ref  ->  [ebp-0x20]  spill-single-def "CSE - conservative"
+;  V05 loc2         [V05,T13] (  3,  6   )     int  ->  eax        
+;  V06 tmp0         [V06,T07] (  2,  8   )     ref  ->  edi         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+;  V07 tmp1         [V07,T08] (  2,  8   )     ref  ->  edx         class-hnd exact "impAppendStmt" <Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig>
+;  V08 tmp2         [V08,T03] (  3, 12   )     ref  ->  edi         "arr expr"
+;  V09 tmp3         [V09,T09] (  2,  8   )     ref  ->  ecx         "arr expr"
+;  V10 tmp4         [V10,T04] (  3, 12   )     ref  ->  edx         "arr expr"
+;  V11 tmp5         [V11,T10] (  2,  8   )     ref  ->  ecx         "arr expr"
+;  V12 cse0         [V12,T14] (  3,  6   )     int  ->  [ebp-0x18]  spill-single-def "CSE - moderate"
+;  V13 cse1         [V13,T11] (  3,  6   )     ref  ->  [ebp-0x2C]  spill-single-def "CSE - moderate"
+;  V14 cse2         [V14,T15] (  3,  6   )     int  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
+;  V15 cse3         [V15,T12] (  3,  6   )     ref  ->  [ebp-0x30]  spill-single-def "CSE - moderate"
+;  V16 cse4         [V16,T16] (  3,  6   )     int  ->  [ebp-0x20]  spill-single-def "CSE - moderate"
+;  V17 cse5         [V17,T17] (  3,  6   )     int  ->  [ebp-0x24]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 36
 
 G_M40378_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -37,15 +35,15 @@ G_M40378_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 20
-       mov      bword ptr [ebp-0x18], ecx
+       sub      esp, 36
+       mov      bword ptr [ebp-0x28], ecx
        ; GC ptr vars +{V00}
        mov      esi, edx
        ; gcrRegs +[esi]
        mov      ebx, gword ptr [ebp+0x08]
        ; gcrRegs +[ebx]
                        ;; size=17 bbWeight=1 PerfScore 6.75
-G_M40378_IG02:        ; bbWeight=1, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG02:        ; bbWeight=1, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        cmp      dword ptr [esi+0x08], 1
        jne      SHORT G_M40378_IG05
                        ;; size=6 bbWeight=1 PerfScore 4.00
@@ -62,9 +60,9 @@ G_M40378_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG05:        ; bbWeight=0.50, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M40378_IG05:        ; bbWeight=0.50, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ebx esi]
-       ; GC ptr vars +{V00 V03}
+       ; GC ptr vars +{V00 V05}
        xor      eax, eax
        mov      edx, 1
        cmp      dword ptr [esi+0x08], 1
@@ -76,21 +74,25 @@ G_M40378_IG06:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
                        ;; size=4 bbWeight=4 PerfScore 5.00
 G_M40378_IG07:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, dword ptr [esi+0x08]
+       mov      dword ptr [ebp-0x18], ecx
        cmp      eax, ecx
        jae      G_M40378_IG24
        mov      edi, gword ptr [esi+0x04]
        ; gcrRegs +[edi]
-       mov      gword ptr [ebp-0x1C], edi
-       ; GC ptr vars +{V17}
-       cmp      eax, dword ptr [edi+0x04]
+       mov      gword ptr [ebp-0x2C], edi
+       ; GC ptr vars +{V13}
+       mov      ecx, dword ptr [edi+0x04]
+       mov      dword ptr [ebp-0x20], ecx
+       cmp      eax, ecx
        jae      G_M40378_IG23
        mov      dword ptr [ebp-0x10], eax
        mov      edi, gword ptr [edi+4*eax+0x08]
+       mov      ecx, dword ptr [ebp-0x18]
        cmp      edx, ecx
        jae      G_M40378_IG24
-       mov      ecx, gword ptr [ebp-0x1C]
+       mov      ecx, gword ptr [ebp-0x2C]
        ; gcrRegs +[ecx]
-       cmp      edx, dword ptr [ecx+0x04]
+       cmp      edx, dword ptr [ebp-0x20]
        jae      G_M40378_IG23
        mov      dword ptr [ebp-0x14], edx
        push     gword ptr [ecx+4*edx+0x08]
@@ -99,12 +101,12 @@ G_M40378_IG07:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        ; gcr arg push 1
        push     gword ptr [ebx+0x10]
        ; gcr arg push 2
-       mov      ecx, bword ptr [ebp-0x18]
+       mov      ecx, bword ptr [ebp-0x28]
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
        mov      edx, edi
        ; gcrRegs +[edx]
-       ; GC ptr vars -{V03 V17}
+       ; GC ptr vars -{V05 V13}
        call     [<unknown method>]
        ; gcrRegs -[edx edi]
        ; byrRegs -[ecx]
@@ -113,7 +115,7 @@ G_M40378_IG07:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        jne      SHORT G_M40378_IG09
        mov      edi, -1
        jmp      SHORT G_M40378_IG12
-                       ;; size=88 bbWeight=2 PerfScore 68.50
+                       ;; size=99 bbWeight=2 PerfScore 71.00
 G_M40378_IG08:        ; bbWeight=0.25, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        mov      edi, eax
        jmp      SHORT G_M40378_IG13
@@ -154,9 +156,9 @@ G_M40378_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M40378_IG16:        ; bbWeight=2, gcVars=00000008 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M40378_IG16:        ; bbWeight=2, gcVars=00000020 {V00}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs +[ebx esi]
-       ; GC ptr vars +{V00 V03}
+       ; GC ptr vars +{V00 V05}
        mov      eax, edi
        jmp      G_M40378_IG06
                        ;; size=7 bbWeight=2 PerfScore 4.50
@@ -172,20 +174,24 @@ G_M40378_IG18:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
                        ;; size=4 bbWeight=4 PerfScore 5.00
 G_M40378_IG19:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, dword ptr [esi+0x08]
+       mov      dword ptr [ebp-0x1C], ecx
        cmp      edi, ecx
        jae      SHORT G_M40378_IG24
        mov      edx, gword ptr [esi+0x04]
        ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x20], edx
-       ; GC ptr vars +{V19}
-       cmp      edi, dword ptr [edx+0x04]
+       mov      gword ptr [ebp-0x30], edx
+       ; GC ptr vars +{V15}
+       mov      ecx, dword ptr [edx+0x04]
+       mov      dword ptr [ebp-0x24], ecx
+       cmp      edi, ecx
        jae      SHORT G_M40378_IG23
        mov      edx, gword ptr [edx+4*edi+0x08]
+       mov      ecx, dword ptr [ebp-0x1C]
        cmp      eax, ecx
        jae      SHORT G_M40378_IG24
-       mov      ecx, gword ptr [ebp-0x20]
+       mov      ecx, gword ptr [ebp-0x30]
        ; gcrRegs +[ecx]
-       cmp      eax, dword ptr [ecx+0x04]
+       cmp      eax, dword ptr [ebp-0x24]
        jae      SHORT G_M40378_IG23
        mov      dword ptr [ebp-0x14], eax
        push     gword ptr [ecx+4*eax+0x08]
@@ -194,10 +200,10 @@ G_M40378_IG19:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        ; gcr arg push 1
        push     gword ptr [ebx+0x10]
        ; gcr arg push 2
-       mov      ecx, bword ptr [ebp-0x18]
+       mov      ecx, bword ptr [ebp-0x28]
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
-       ; GC ptr vars -{V03 V19}
+       ; GC ptr vars -{V05 V15}
        call     [<unknown method>]
        ; gcrRegs -[edx]
        ; byrRegs -[ecx]
@@ -205,7 +211,7 @@ G_M40378_IG19:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        test     eax, eax
        mov      eax, dword ptr [ebp-0x14]
        jge      SHORT G_M40378_IG14
-                       ;; size=63 bbWeight=2 PerfScore 63.50
+                       ;; size=74 bbWeight=2 PerfScore 66.00
 G_M40378_IG20:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        inc      eax
        cmp      eax, dword ptr [esi+0x08]
@@ -232,6 +238,6 @@ G_M40378_IG24:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 304, prolog size 17, PerfScore 216.56, instruction count 114, allocated bytes for code 304 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
+; Total bytes of code 326, prolog size 17, PerfScore 221.56, instruction count 122, allocated bytes for code 326 (MethodHash=ddc26245) for method Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
 ; ============================================================
 

realworld.run.windows.x86.checked.mch

-8 (-14.04%) : 2276.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)

@@ -9,7 +9,7 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  5,  5   )     ref  ->  ebx         this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
-;  V01 tmp0         [V01,T01] (  2,  4   )   ubyte  ->  ecx         "Inlining Arg"
+;* V01 tmp0         [V01    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;
 ; Lcl frame size = 0
 
@@ -32,11 +32,8 @@ G_M21281_IG02:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        mov      ecx, 1
        xchg     dword ptr [ebx], ecx
        test     ecx, ecx
-       sete     cl
-       movzx    ecx, cl
-       test     ecx, ecx
-       jne      SHORT G_M21281_IG04
-                       ;; size=32 bbWeight=1 PerfScore 29.50
+       je       SHORT G_M21281_IG04
+                       ;; size=24 bbWeight=1 PerfScore 28.00
 G_M21281_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; byrRegs -[ebx]
        mov      ecx, 0xD1FFAB1E
@@ -52,6 +49,6 @@ G_M21281_IG04:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        ret      
                        ;; size=3 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 57, prolog size 4, PerfScore 35.75, instruction count 21, allocated bytes for code 57 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
+; Total bytes of code 49, prolog size 4, PerfScore 34.25, instruction count 18, allocated bytes for code 49 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
 ; ============================================================
 

-34 (-12.55%) : 15464.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+Cursor:.ctor(Microsoft.ML.Runtime.IChannelProvider,Microsoft.ML.DataViewSchema,int[],int[],Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[],System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch],System.Action):this (FullOpts)

@@ -8,28 +8,27 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] ( 15, 21   )     ref  ->  esi         this class-hnd single-def <Microsoft.ML.Data.DataViewUtils+Splitter+Cursor>
-;  V01 arg1         [V01,T11] (  3,  3   )     ref  ->  edx         class-hnd single-def <Microsoft.ML.Runtime.IChannelProvider>
-;  V02 arg2         [V02,T16] (  1,  1   )     ref  ->  [ebp+0x1C]  class-hnd single-def <Microsoft.ML.DataViewSchema>
-;  V03 arg3         [V03,T13] (  2,  2   )     ref  ->  edi         class-hnd single-def <int[]>
-;  V04 arg4         [V04,T17] (  1,  1   )     ref  ->  [ebp+0x14]  class-hnd single-def <int[]>
-;  V05 arg5         [V05,T14] (  2,  2   )     ref  ->  ebx         class-hnd single-def <Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[]>
-;  V06 arg6         [V06,T18] (  1,  1   )     ref  ->  [ebp+0x0C]  class-hnd single-def <System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch]>
-;  V07 arg7         [V07,T19] (  1,  1   )     ref  ->  [ebp+0x08]  class-hnd single-def <System.Action>
-;  V08 loc0         [V08,T04] (  5, 17   )     int  ->  ebx        
+;  V01 arg1         [V01,T10] (  3,  3   )     ref  ->  edx         class-hnd single-def <Microsoft.ML.Runtime.IChannelProvider>
+;  V02 arg2         [V02,T15] (  1,  1   )     ref  ->  [ebp+0x1C]  class-hnd single-def <Microsoft.ML.DataViewSchema>
+;  V03 arg3         [V03,T12] (  2,  2   )     ref  ->  edi         class-hnd single-def <int[]>
+;  V04 arg4         [V04,T16] (  1,  1   )     ref  ->  [ebp+0x14]  class-hnd single-def <int[]>
+;  V05 arg5         [V05,T13] (  2,  2   )     ref  ->  ebx         class-hnd single-def <Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[]>
+;  V06 arg6         [V06,T17] (  1,  1   )     ref  ->  [ebp+0x0C]  class-hnd single-def <System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch]>
+;  V07 arg7         [V07,T18] (  1,  1   )     ref  ->  [ebp+0x08]  class-hnd single-def <System.Action>
+;  V08 loc0         [V08,T00] (  7, 25   )     int  ->  ebx        
 ;* V09 tmp0         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <<unknown class>>
-;  V10 tmp1         [V10,T12] (  3,  4   )     ref  ->  eax         single-def "CASTCLASS eval op1"
-;  V11 tmp2         [V11,T15] (  3,  1   )     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;  V12 tmp3         [V12,T07] (  4,  6.50)     ref  ->  ecx         class-hnd single-def "spilling QMark2" <<unknown class>>
+;  V10 tmp1         [V10,T11] (  3,  4   )     ref  ->  eax         single-def "CASTCLASS eval op1"
+;  V11 tmp2         [V11,T14] (  3,  1   )     int  ->  edx         "fgMakeTemp is creating a new local variable"
+;  V12 tmp3         [V12,T06] (  4,  6.50)     ref  ->  ecx         class-hnd single-def "spilling QMark2" <<unknown class>>
 ;  V13 tmp4         [V13,T01] (  3, 24   )     ref  ->  ecx         "arr expr"
 ;  V14 tmp5         [V14,T02] (  3, 24   )     ref  ->  ecx         "argument with side effect"
-;  V15 tmp6         [V15,T00] (  4, 32   )     int  ->  [ebp-0x10]  spill-single-def "argument with side effect"
-;  V16 tmp7         [V16,T05] (  2, 16   )     ref  ->  [ebp-0x18]  spill-single-def "argument with side effect"
-;  V17 tmp8         [V17,T08] (  3,  6   )     ref  ->  ecx         single-def "arr expr"
-;  V18 tmp9         [V18,T09] (  3,  6   )     ref  ->  ecx         single-def "argument with side effect"
-;  V19 cse0         [V19,T06] (  5,  8   )     int  ->  [ebp-0x14]  spill-single-def "CSE - moderate"
-;  V20 rat0         [V20,T10] (  3,  6   )   byref  ->  edx         "ReplaceWithLclVar is creating a new local variable"
+;  V15 tmp6         [V15,T04] (  2, 16   )     ref  ->  [ebp-0x10]  spill-single-def "argument with side effect"
+;  V16 tmp7         [V16,T07] (  3,  6   )     ref  ->  ecx         single-def "arr expr"
+;  V17 tmp8         [V17,T08] (  3,  6   )     ref  ->  ecx         single-def "argument with side effect"
+;  V18 cse0         [V18,T05] (  5,  8   )     int  ->  edi         "CSE - moderate"
+;  V19 rat0         [V19,T09] (  3,  6   )   byref  ->  edx         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 12
+; Lcl frame size = 4
 
 G_M44758_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -37,15 +36,15 @@ G_M44758_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 12
+       push     eax
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, gword ptr [ebp+0x18]
        ; gcrRegs +[edi]
        mov      ebx, gword ptr [ebp+0x10]
        ; gcrRegs +[ebx]
-                       ;; size=17 bbWeight=1 PerfScore 6.75
-G_M44758_IG02:        ; bbWeight=1, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref
+                       ;; size=15 bbWeight=1 PerfScore 7.50
+G_M44758_IG02:        ; bbWeight=1, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[edx]
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -85,43 +84,39 @@ G_M44758_IG02:        ; bbWeight=1, gcrefRegs=000000CC {edx ebx esi edi}, byrefR
        xor      ebx, ebx
        mov      edi, dword ptr [edi+0x04]
        ; gcrRegs -[edi]
-       mov      dword ptr [ebp-0x14], edi
        test     edi, edi
-       jle      G_M44758_IG09
-                       ;; size=83 bbWeight=1 PerfScore 20.50
+       jle      SHORT G_M44758_IG04
+                       ;; size=76 bbWeight=1 PerfScore 19.50
 G_M44758_IG03:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      eax, gword ptr [esi+0x2C]
        ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x18], eax
-       ; GC ptr vars +{V16}
-       mov      edx, ebx
-       mov      dword ptr [ebp-0x10], edx
+       mov      gword ptr [ebp-0x10], eax
+       ; GC ptr vars +{V15}
        mov      ecx, gword ptr [esi+0x28]
        ; gcrRegs +[ecx]
-       cmp      edx, dword ptr [ecx+0x04]
-       jae      G_M44758_IG10
-       mov      ecx, gword ptr [ecx+4*edx+0x08]
-       mov      edi, dword ptr [ecx]
-       mov      edi, dword ptr [edi+0x2C]
-       call     [edi+0x1C]<unknown method>
+       cmp      ebx, dword ptr [ecx+0x04]
+       jae      SHORT G_M44758_IG08
+       mov      ecx, gword ptr [ecx+4*ebx+0x08]
+       mov      edx, dword ptr [ecx]
+       mov      edx, dword ptr [edx+0x2C]
+       call     [edx+0x1C]<unknown method>
        ; gcrRegs -[ecx]
        push     eax
-       mov      edx, dword ptr [ebp-0x10]
-       mov      ecx, gword ptr [ebp-0x18]
+       mov      ecx, gword ptr [ebp-0x10]
        ; gcrRegs +[ecx]
-       ; GC ptr vars -{V16}
+       mov      edx, ebx
+       ; GC ptr vars -{V15}
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[eax ecx]
        inc      ebx
-       mov      edi, dword ptr [ebp-0x14]
        cmp      edi, ebx
-       jg       SHORT G_M44758_IG08
-                       ;; size=55 bbWeight=4 PerfScore 103.00
+       jg       SHORT G_M44758_IG03
+                       ;; size=42 bbWeight=4 PerfScore 91.00
 G_M44758_IG04:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, gword ptr [esi+0x28]
        ; gcrRegs +[ecx]
        cmp      edi, dword ptr [ecx+0x04]
-       jae      SHORT G_M44758_IG10
+       jae      SHORT G_M44758_IG08
        mov      ecx, gword ptr [ecx+4*edi+0x08]
        mov      eax, dword ptr [ecx]
        mov      eax, dword ptr [eax+0x2C]
@@ -135,7 +130,7 @@ G_M44758_IG04:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
 G_M44758_IG05:        ; bbWeight=0.25, gcrefRegs=00000043 {eax ecx esi}, byrefRegs=00000000 {}, byref, isz
        mov      edx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [ecx], edx
-       jne      SHORT G_M44758_IG11
+       jne      SHORT G_M44758_IG09
                        ;; size=9 bbWeight=0.25 PerfScore 1.06
 G_M44758_IG06:        ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax]
@@ -162,26 +157,17 @@ G_M44758_IG06:        ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=0000
        ; byrRegs -[edx]
                        ;; size=46 bbWeight=1 PerfScore 9.00
 G_M44758_IG07:        ; bbWeight=1, epilog, nogc, extend
-       lea      esp, [ebp-0x0C]
+       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      24
-                       ;; size=10 bbWeight=1 PerfScore 4.50
-G_M44758_IG08:        ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs +[esi]
-       jmp      G_M44758_IG03
-                       ;; size=5 bbWeight=2 PerfScore 4.00
-G_M44758_IG09:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      edi, dword ptr [ebp-0x14]
-       jmp      SHORT G_M44758_IG04
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M44758_IG10:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi]
+                       ;; size=8 bbWeight=1 PerfScore 4.50
+G_M44758_IG08:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        call     CORINFO_HELP_RNGCHKFAIL
                        ;; size=5 bbWeight=0 PerfScore 0.00
-G_M44758_IG11:        ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
+G_M44758_IG09:        ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
        ; gcrRegs +[eax]
        mov      ecx, edx
        mov      edx, eax
@@ -191,6 +177,6 @@ G_M44758_IG11:        ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000
        int3     
                        ;; size=10 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 271, prolog size 9, PerfScore 166.81, instruction count 88, allocated bytes for code 271 (MethodHash=c0345129) for method Microsoft.ML.Data.DataViewUtils+Splitter+Cursor:.ctor(Microsoft.ML.Runtime.IChannelProvider,Microsoft.ML.DataViewSchema,int[],int[],Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[],System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch],System.Action):this (FullOpts)
+; Total bytes of code 237, prolog size 7, PerfScore 149.06, instruction count 81, allocated bytes for code 237 (MethodHash=c0345129) for method Microsoft.ML.Data.DataViewUtils+Splitter+Cursor:.ctor(Microsoft.ML.Runtime.IChannelProvider,Microsoft.ML.DataViewSchema,int[],int[],Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[],System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch],System.Action):this (FullOpts)
 ; ============================================================
 

-20 (-12.50%) : 35684.dasm - System.Management.Automation.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)

@@ -8,18 +8,16 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] (  9, 13.50)     ref  ->  esi         this class-hnd single-def <System.Management.Automation.ComInterop.ComInvokeBinder>
-;  V01 loc0         [V01,T07] (  5,  6.50)     ref  ->  [ebp-0x14]  class-hnd <System.Linq.Expressions.Expression[]>
-;  V02 loc1         [V02,T06] (  4,  9.50)     int  ->  edi        
+;  V00 this         [V00,T03] (  9, 13.50)     ref  ->  esi         this class-hnd single-def <System.Management.Automation.ComInterop.ComInvokeBinder>
+;  V01 loc0         [V01,T05] (  5,  6.50)     ref  ->  ebx         class-hnd <System.Linq.Expressions.Expression[]>
+;  V02 loc1         [V02,T04] (  4,  9.50)     int  ->  edi        
 ;  V03 loc2         [V03,T02] (  6, 21   )     int  ->  [ebp-0x10] 
 ;  V04 tmp0         [V04,T01] (  3, 24   )     int  ->  edx         "impSpillLclRefs"
 ;* V05 tmp1         [V05    ] (  0,  0   )     int  ->  zero-ref    "impSpillLclRefs"
 ;* V06 tmp2         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Dynamic.DynamicMetaObject>
-;  V07 tmp3         [V07,T00] (  3, 24   )     ref  ->  ebx         "arr expr"
-;  V08 tmp4         [V08,T03] (  2, 16   )     ref  ->  ecx         "argument with side effect"
-;  V09 tmp5         [V09,T04] (  2, 16   )     int  ->  edx         "argument with side effect"
+;  V07 tmp3         [V07,T00] (  3, 24   )     ref  ->  ecx         "arr expr"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 4
 
 G_M34535_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -27,10 +25,10 @@ G_M34535_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 8
+       push     eax
        mov      esi, ecx
        ; gcrRegs +[esi]
-                       ;; size=11 bbWeight=1 PerfScore 4.75
+                       ;; size=9 bbWeight=1 PerfScore 5.50
 G_M34535_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        xor      edi, edi
        cmp      gword ptr [esi+0x1C], 0
@@ -76,68 +74,50 @@ G_M34535_IG05:        ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        mov      ecx, gword ptr [esi+0x14]
        ; gcrRegs +[ecx]
        cmp      dword ptr [ecx+0x04], 0
-       jle      SHORT G_M34535_IG10
+       jle      SHORT G_M34535_IG07
                        ;; size=11 bbWeight=1 PerfScore 6.25
 G_M34535_IG06:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[ecx]
        mov      edx, edi
        lea      edi, [edx+0x01]
-       mov      gword ptr [ebp-0x14], ebx
-       ; GC ptr vars +{V01}
-       mov      ecx, ebx
+       mov      ecx, gword ptr [esi+0x14]
        ; gcrRegs +[ecx]
-       mov      ebx, gword ptr [esi+0x14]
-       cmp      eax, dword ptr [ebx+0x04]
-       jae      SHORT G_M34535_IG11
+       cmp      eax, dword ptr [ecx+0x04]
+       jae      SHORT G_M34535_IG09
        mov      dword ptr [ebp-0x10], eax
-       mov      ebx, gword ptr [ebx+4*eax+0x08]
-       push     gword ptr [ebx+0x08]
+       mov      ecx, gword ptr [ecx+4*eax+0x08]
+       push     gword ptr [ecx+0x08]
        ; gcr arg push 0
+       mov      ecx, ebx
        call     CORINFO_HELP_ARRADDR_ST
-       ; gcrRegs -[ecx ebx]
+       ; gcrRegs -[ecx]
        ; gcr arg pop 1
-       mov      ebx, dword ptr [ebp-0x10]
-       inc      ebx
-       mov      eax, gword ptr [esi+0x14]
-       ; gcrRegs +[eax]
-       cmp      dword ptr [eax+0x04], ebx
+       mov      eax, dword ptr [ebp-0x10]
+       inc      eax
+       mov      edx, gword ptr [esi+0x14]
+       ; gcrRegs +[edx]
+       cmp      dword ptr [edx+0x04], eax
+       jg       SHORT G_M34535_IG06
+                       ;; size=42 bbWeight=4 PerfScore 81.00
+G_M34535_IG07:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[edx esi]
        mov      eax, ebx
-       ; gcrRegs -[eax]
-       jg       SHORT G_M34535_IG09
-                       ;; size=47 bbWeight=4 PerfScore 86.00
-G_M34535_IG07:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi]
-       mov      eax, gword ptr [ebp-0x14]
        ; gcrRegs +[eax]
-                       ;; size=3 bbWeight=1 PerfScore 1.00
+                       ;; size=2 bbWeight=1 PerfScore 0.25
 G_M34535_IG08:        ; bbWeight=1, epilog, nogc, extend
-       lea      esp, [ebp-0x0C]
+       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      
-                       ;; size=8 bbWeight=1 PerfScore 3.50
-G_M34535_IG09:        ; bbWeight=2, gcVars=00000080 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[eax] +[esi]
-       mov      ebx, gword ptr [ebp-0x14]
-       ; gcrRegs +[ebx]
-       jmp      SHORT G_M34535_IG06
-                       ;; size=5 bbWeight=2 PerfScore 6.00
-G_M34535_IG10:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[esi]
-       ; GC ptr vars -{V01}
-       mov      gword ptr [ebp-0x14], ebx
-       ; GC ptr vars +{V01}
-       jmp      SHORT G_M34535_IG07
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M34535_IG11:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[ebx]
-       ; GC ptr vars -{V01}
+                       ;; size=6 bbWeight=1 PerfScore 3.50
+G_M34535_IG09:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[eax ebx]
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 160, prolog size 11, PerfScore 121.75, instruction count 61, allocated bytes for code 160 (MethodHash=e9dc7918) for method System.Management.Automation.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
+; Total bytes of code 140, prolog size 9, PerfScore 109.25, instruction count 55, allocated bytes for code 140 (MethodHash=e9dc7918) for method System.Management.Automation.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
 ; ============================================================
 

+8 (+2.05%) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)

@@ -8,33 +8,33 @@
 ; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T08] (  7,  4.50)     ref  ->  esi         class-hnd single-def <System.String>
-;  V01 loc0         [V01,T10] (  6,  2.38)     ref  ->  edi         class-hnd exact <System.String>
-;  V02 loc1         [V02,T07] (  8, 14.50)     ref  ->  ebx         class-hnd exact single-def <<unknown class>>
-;  V03 loc2         [V03,T02] (  6, 17   )     ref  ->  esi         class-hnd exact single-def <<unknown class>>
-;  V04 loc3         [V04,T00] (  9, 32.50)     int  ->  edi        
+;  V00 arg0         [V00,T07] (  7,  4.50)     ref  ->  esi         class-hnd single-def <System.String>
+;  V01 loc0         [V01,T09] (  6,  2.38)     ref  ->  edi         class-hnd exact <System.String>
+;  V02 loc1         [V02,T06] (  7, 14   )     ref  ->  ebx         class-hnd exact single-def <<unknown class>>
+;  V03 loc2         [V03,T02] (  6, 17   )     ref  ->  edi         class-hnd exact single-def <<unknown class>>
+;  V04 loc3         [V04,T00] (  9, 32.50)     int  ->  [ebp-0x10] 
 ;  V05 loc4         [V05,T03] (  5, 16.50)     int  ->  ebx        
-;  V06 tmp0         [V06,T11] (  2,  2   )     ref  ->  edi         single-def "CASTCLASS eval op1"
+;  V06 tmp0         [V06,T10] (  2,  2   )     ref  ->  edi         single-def "CASTCLASS eval op1"
 ;* V07 tmp1         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.String>
-;  V08 tmp2         [V08,T09] (  3,  3   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V08 tmp2         [V08,T08] (  3,  3   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V09 tmp3         [V09,T04] (  2, 16   )   byref  ->  ecx         "impAppendStmt"
 ;* V10 tmp4         [V10,T16] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V11 tmp5         [V11,T17] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V12 tmp6         [V12    ] (  2,  2   )  ushort  ->  [ebp-0x10]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;  V12 tmp6         [V12    ] (  2,  2   )  ushort  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
 ;* V13 tmp7         [V13    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;  V14 tmp8         [V14    ] (  2,  2   )  ushort  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+;  V14 tmp8         [V14    ] (  2,  2   )  ushort  ->  [ebp-0x18]  do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
 ;* V15 tmp9         [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V16 tmp10        [V16,T14] (  2,  1   )   byref  ->  ecx         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V17 tmp11        [V17,T18] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x4)" P-INDEP
 ;  V18 tmp12        [V18,T15] (  2,  1   )   byref  ->  ecx         single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V19 tmp13        [V19,T19] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
-;  V20 tmp14        [V20,T12] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V21 tmp15        [V21,T13] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V20 tmp14        [V20,T11] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
+;  V21 tmp15        [V21,T12] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
 ;  V22 tmp16        [V22,T01] (  3, 24   )     ref  ->  edx         "arr expr"
-;  V23 tmp17        [V23,T05] (  2, 16   )   byref  ->  ecx         "argument with side effect"
-;  V24 tmp18        [V24,T06] (  2, 16   )     ref  ->  edx         "argument with side effect"
+;  V23 tmp17        [V23,T05] (  2, 16   )     ref  ->  edx         "argument with side effect"
+;  V24 cse0         [V24,T13] (  3,  1.50)     int  ->  esi         "CSE - moderate"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M12781_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -42,7 +42,7 @@ G_M12781_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 8
+       sub      esp, 12
        mov      esi, ecx
        ; gcrRegs +[esi]
                        ;; size=11 bbWeight=1 PerfScore 4.75
@@ -113,8 +113,8 @@ G_M12781_IG08:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
                        ;; size=64 bbWeight=0.50 PerfScore 7.88
 G_M12781_IG09:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        movzx    ecx, word  ptr [D1FFAB1EH]      ; static handle
-       mov      word  ptr [ebp-0x10], cx
-       lea      ecx, bword ptr [ebp-0x10]
+       mov      word  ptr [ebp-0x14], cx
+       lea      ecx, bword ptr [ebp-0x14]
        ; byrRegs +[ecx]
        push     1
        push     ecx
@@ -140,8 +140,8 @@ G_M12781_IG10:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
                        ;; size=17 bbWeight=0.50 PerfScore 2.62
 G_M12781_IG11:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
        movzx    ecx, word  ptr [D1FFAB1EH]      ; static handle
-       mov      word  ptr [ebp-0x14], cx
-       lea      ecx, bword ptr [ebp-0x14]
+       mov      word  ptr [ebp-0x18], cx
+       lea      ecx, bword ptr [ebp-0x18]
        ; byrRegs +[ecx]
        push     1
        push     ecx
@@ -160,57 +160,61 @@ G_M12781_IG11:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=0
        ; gcrRegs -[eax ecx edx]
                        ;; size=42 bbWeight=0.50 PerfScore 6.75
 G_M12781_IG12:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
-       mov      edx, dword ptr [ebx+0x08]
+       mov      esi, dword ptr [ebx+0x08]
+       mov      edx, esi
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWARR_1_VC
        ; gcrRegs +[eax]
-       mov      esi, eax
-       ; gcrRegs +[esi]
-       xor      edi, edi
-       cmp      dword ptr [ebx+0x08], 0
-       jle      SHORT G_M12781_IG14
-                       ;; size=23 bbWeight=0.50 PerfScore 3.88
-G_M12781_IG13:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edi, eax
+       ; gcrRegs +[edi]
+       xor      eax, eax
        ; gcrRegs -[eax]
-       cmp      edi, dword ptr [esi+0x04]
+       test     esi, esi
+       jle      SHORT G_M12781_IG14
+                       ;; size=23 bbWeight=0.50 PerfScore 2.62
+G_M12781_IG13:        ; bbWeight=4, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+       cmp      eax, dword ptr [edi+0x04]
        jae      SHORT G_M12781_IG17
-       lea      ecx, bword ptr [esi+8*edi+0x08]
+       lea      ecx, bword ptr [edi+8*eax+0x08]
        ; byrRegs +[ecx]
-       cmp      edi, dword ptr [ebx+0x08]
+       cmp      eax, dword ptr [ebx+0x08]
        jae      SHORT G_M12781_IG20
        mov      edx, gword ptr [ebx+0x04]
        ; gcrRegs +[edx]
-       cmp      edi, dword ptr [edx+0x04]
+       cmp      eax, dword ptr [edx+0x04]
        jae      SHORT G_M12781_IG17
-       mov      edx, gword ptr [edx+4*edi+0x08]
+       mov      dword ptr [ebp-0x10], eax
+       mov      edx, gword ptr [edx+4*eax+0x08]
        call     [<unknown method>]
        ; gcrRegs -[edx]
        ; byrRegs -[ecx]
-       inc      edi
-       cmp      edi, dword ptr [ebx+0x08]
+       mov      esi, dword ptr [ebp-0x10]
+       inc      esi
+       cmp      esi, dword ptr [ebx+0x08]
+       mov      eax, esi
        jl       SHORT G_M12781_IG13
-                       ;; size=38 bbWeight=4 PerfScore 97.00
-G_M12781_IG14:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+                       ;; size=46 bbWeight=4 PerfScore 106.00
+G_M12781_IG14:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ebx]
        xor      ebx, ebx
-       cmp      dword ptr [esi+0x04], 0
+       cmp      dword ptr [edi+0x04], 0
        jle      G_M12781_IG03
                        ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M12781_IG15:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M12781_IG15:        ; bbWeight=4, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
        lea      eax, [8*ebx]
        add      eax, 8
-       add      eax, esi
+       add      eax, edi
        ; byrRegs +[eax]
        push     gword ptr [eax+0x04]
        push     gword ptr [eax]
        call     [<unknown method>]
        ; byrRegs -[eax]
        inc      ebx
-       cmp      dword ptr [esi+0x04], ebx
+       cmp      dword ptr [edi+0x04], ebx
        jg       SHORT G_M12781_IG15
                        ;; size=29 bbWeight=4 PerfScore 49.00
 G_M12781_IG16:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi]
+       ; gcrRegs -[edi]
        jmp      G_M12781_IG03
                        ;; size=5 bbWeight=0.50 PerfScore 1.00
 G_M12781_IG17:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -236,6 +240,6 @@ G_M12781_IG20:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 390, prolog size 9, PerfScore 195.53, instruction count 115, allocated bytes for code 390 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
+; Total bytes of code 398, prolog size 9, PerfScore 203.28, instruction count 119, allocated bytes for code 398 (MethodHash=6685ce12) for method System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
 ; ============================================================
 

+3 (+2.24%) : 13694.dasm - .$Async+Parallel@1621-3[System.Canon]:Invoke(System.Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)

@@ -16,14 +16,12 @@
 ;  V05 tmp3         [V05,T07] (  2,  4   )     ref  ->  [ebp-0x18]  class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
 ;  V06 tmp4         [V06,T04] (  3,  4   )     int  ->  ebx         "spilling helperCall"
 ;  V07 tmp5         [V07,T08] (  2,  4   )   byref  ->  [ebp-0x1C]  spill-single-def "Inlining Arg"
-;  V08 tmp6         [V08,T14] (  2,  2   )     ref  ->  [ebp-0x20]  spill-single-def "field V02.contents (fldOffset=0x0)" P-INDEP
+;  V08 tmp6         [V08,T12] (  2,  2   )     ref  ->  [ebp-0x20]  spill-single-def "field V02.contents (fldOffset=0x0)" P-INDEP
 ;  V09 tmp7         [V09,T09] (  2,  4   )     ref  ->  ecx         single-def "argument with side effect"
-;  V10 tmp8         [V10,T12] (  2,  4   )     int  ->  eax         "argument with side effect"
-;  V11 tmp9         [V11,T13] (  3,  3   )     ref  ->  ecx         single-def "Field obj"
-;  V12 tmp10        [V12,T10] (  2,  4   )     ref  ->  edi         single-def "argument with side effect"
-;  V13 tmp11        [V13,T11] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
-;  V14 rat0         [V14,T03] (  3,  4.40)     int  ->  edi         "Spilling to split statement for tree"
-;  V15 rat1         [V15,T01] (  3,  5.60)     int  ->  ebx         "fgMakeTemp is creating a new local variable"
+;  V10 tmp8         [V10,T10] (  2,  4   )     int  ->  eax         "argument with side effect"
+;  V11 tmp9         [V11,T11] (  3,  3   )     ref  ->  ecx         single-def "Field obj"
+;  V12 rat0         [V12,T03] (  3,  4.40)     int  ->  edi         "Spilling to split statement for tree"
+;  V13 rat1         [V13,T01] (  3,  5.60)     int  ->  ebx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 20
 
@@ -59,8 +57,9 @@ G_M9390_IG02:        ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000
        ; gcrRegs +[eax]
        mov      gword ptr [ebp-0x14], eax
        ; GC ptr vars +{V04}
-       mov      eax, gword ptr [esi+0x08]
-       mov      gword ptr [ebp-0x18], eax
+       mov      edx, gword ptr [esi+0x08]
+       ; gcrRegs +[edx]
+       mov      gword ptr [ebp-0x18], edx
        ; GC ptr vars +{V05}
        mov      ecx, gword ptr [esi+0x04]
        ; gcrRegs +[ecx]
@@ -79,39 +78,42 @@ G_M9390_IG02:        ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000
        test     ebx, ebx
        je       SHORT G_M9390_IG04
                        ;; size=64 bbWeight=1 PerfScore 33.75
-G_M9390_IG03:        ; bbWeight=0.80, gcVars=000041E0 {V03 V04 V05 V07 V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[eax]
+G_M9390_IG03:        ; bbWeight=0.80, gcVars=000011E0 {V03 V04 V05 V07 V08}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[eax edx]
        ; byrRegs -[ecx]
+       mov      eax, gword ptr [ebp-0x14]
+       ; gcrRegs +[eax]
        jmp      SHORT G_M9390_IG05
-                       ;; size=2 bbWeight=0.80 PerfScore 1.60
+                       ;; size=5 bbWeight=0.80 PerfScore 2.40
 G_M9390_IG04:        ; bbWeight=0.20, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[eax]
        mov      ecx, edi
        mov      edx, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      ebx, eax
-                       ;; size=14 bbWeight=0.20 PerfScore 0.35
-G_M9390_IG05:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       mov      eax, gword ptr [ebp-0x14]
+       ; gcrRegs +[eax]
+                       ;; size=17 bbWeight=0.20 PerfScore 0.55
+G_M9390_IG05:        ; bbWeight=1, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
        push     gword ptr [ebp-0x20]
-       mov      edi, gword ptr [ebp-0x10]
-       ; gcrRegs +[edi]
-       mov      edx, gword ptr [ebp-0x14]
-       ; gcrRegs +[edx]
        push     gword ptr [ebp-0x18]
-       mov      eax, -1
+       mov      edx, -1
        mov      ecx, bword ptr [ebp-0x1C]
        ; byrRegs +[ecx]
        lock     
-       xadd     dword ptr [ecx], eax
-       dec      eax
-       push     eax
+       xadd     dword ptr [ecx], edx
+       dec      edx
+       push     edx
        push     ebx
-       mov      ecx, edi
+       mov      ecx, gword ptr [ebp-0x10]
        ; gcrRegs +[ecx]
        ; byrRegs -[ecx]
+       mov      edx, eax
+       ; gcrRegs +[edx]
        ; GC ptr vars -{V03 V04 V05 V07 V08}
        call     [<unknown method>]
-       ; gcrRegs -[ecx edx edi] +[eax]
-                       ;; size=35 bbWeight=1 PerfScore 27.75
+       ; gcrRegs -[ecx edx]
+                       ;; size=32 bbWeight=1 PerfScore 26.75
 G_M9390_IG06:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
@@ -121,6 +123,6 @@ G_M9390_IG06:        ; bbWeight=1, epilog, nogc, extend
        ret      
                        ;; size=8 bbWeight=1 PerfScore 3.50
 
-; Total bytes of code 134, prolog size 9, PerfScore 71.70, instruction count 54, allocated bytes for code 134 (MethodHash=6e06db51) for method <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
+; Total bytes of code 137, prolog size 9, PerfScore 71.70, instruction count 55, allocated bytes for code 137 (MethodHash=6e06db51) for method <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
 ; ============================================================
 

+8 (+2.29%) : 22231.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)

@@ -15,24 +15,24 @@
 ;  V04 loc2         [V04    ] (  7,  4.50)  struct ( 8) [ebp-0x1C]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.Binder+BestSymbolInfo>
 ;  V05 loc3         [V05,T01] (  9, 33   )     int  ->  [ebp-0x20] 
 ;* V06 loc4         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-;  V07 tmp0         [V07,T18] (  2,  2   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V07 tmp0         [V07,T18] (  2,  2   )     ref  ->  [ebp-0x24]  class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;  V08 tmp1         [V08,T10] (  3,  6   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
 ;* V09 tmp2         [V09    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
 ;* V10 tmp3         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon[]>
 ;  V11 tmp4         [V11,T02] (  3, 24   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
 ;  V12 tmp5         [V12,T09] (  3,  8   )     ref  ->  eax         class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbol>
-;  V13 tmp6         [V13,T00] (  7, 36   )     ref  ->  [ebp-0x24]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+;  V13 tmp6         [V13,T00] (  7, 36   )     ref  ->  [ebp-0x28]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
 ;  V14 tmp7         [V14,T08] (  3, 10   )     int  ->  ecx         "fgMakeTemp is creating a new local variable"
 ;  V15 tmp8         [V15,T07] (  4, 12   )     ref  ->  eax         class-hnd "spilling QMark2" <<unknown class>>
 ;  V16 tmp9         [V16,T03] (  3, 24   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
 ;* V17 tmp10        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-;* V18 tmp11        [V18,T27] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V19 tmp12        [V19,T28] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V20 tmp13        [V20,T15] (  4,  2   )     int  ->  ecx         "Inline return value spill temp"
-;  V21 tmp14        [V21,T12] (  3,  3   )     ref  ->  edx         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
+;* V18 tmp11        [V18,T26] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V19 tmp12        [V19,T27] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V20 tmp13        [V20,T15] (  4,  2   )     int  ->  edx         "Inline return value spill temp"
+;  V21 tmp14        [V21,T12] (  3,  3   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
 ;  V22 tmp15        [V22,T16] (  4,  2   )     int  ->  esi         "Inline return value spill temp"
-;* V23 tmp16        [V23,T26] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-;  V24 tmp17        [V24,T24] (  3,  1.50)     int  ->  eax         "Inline return value spill temp"
+;* V23 tmp16        [V23,T25] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
+;  V24 tmp17        [V24,T23] (  3,  1.50)     int  ->  eax         "Inline return value spill temp"
 ;  V25 tmp18        [V25,T17] (  3,  2   )     ref  ->  ebx         single-def "field V02.array (fldOffset=0x0)" P-INDEP
 ;  V26 tmp19        [V26    ] (  4,  2.50)     int  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed "field V03._location (fldOffset=0x0)" P-DEP
 ;  V27 tmp20        [V27    ] (  2,  1.50)     int  ->  [ebp-0x10]  do-not-enreg[X] addr-exposed "field V03._index (fldOffset=0x4)" P-DEP
@@ -42,14 +42,13 @@
 ;  V31 tmp24        [V31,T04] (  3, 24   )     ref  ->  ecx         "arr expr"
 ;  V32 tmp25        [V32,T06] (  2, 16   )     ref  ->  ecx         "argument with side effect"
 ;  V33 tmp26        [V33,T13] (  3,  3   )     ref  ->  esi         single-def "arr expr"
-;  V34 tmp27        [V34,T14] (  3,  3   )     ref  ->  edx         single-def "arr expr"
+;  V34 tmp27        [V34,T14] (  3,  3   )     ref  ->  ecx         single-def "arr expr"
 ;  V35 tmp28        [V35,T20] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
-;  V36 tmp29        [V36,T21] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V37 cse0         [V37,T22] (  2,  1   )     ref  ->  edx         "CSE - conservative"
-;  V38 cse1         [V38,T25] (  3,  1.50)     int  ->  eax         "CSE - conservative"
-;  V39 cse2         [V39,T23] (  3,  1.50)     ref  ->  edx         "CSE - conservative"
+;  V36 cse0         [V36,T21] (  2,  1   )     ref  ->  ecx         "CSE - conservative"
+;  V37 cse1         [V37,T24] (  3,  1.50)     int  ->  eax         "CSE - conservative"
+;  V38 cse2         [V38,T22] (  3,  1.50)     ref  ->  ecx         "CSE - conservative"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 28
 
 G_M31598_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -57,7 +56,7 @@ G_M31598_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 24
+       sub      esp, 28
        xor      eax, eax
        mov      dword ptr [ebp-0x14], eax
        mov      dword ptr [ebp-0x10], eax
@@ -96,7 +95,7 @@ G_M31598_IG03:        ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
        mov      edx, gword ptr [ecx+4*eax+0x08]
        ; gcrRegs +[edx]
        mov      ecx, edx
-       mov      gword ptr [ebp-0x24], ecx
+       mov      gword ptr [ebp-0x28], ecx
        ; GC ptr vars +{V13}
        mov      edx, dword ptr [ecx]
        ; gcrRegs -[edx]
@@ -108,7 +107,7 @@ G_M31598_IG03:        ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
                        ;; size=47 bbWeight=4 PerfScore 98.00
 G_M31598_IG04:        ; bbWeight=2, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
-       mov      eax, gword ptr [ebp-0x24]
+       mov      eax, gword ptr [ebp-0x28]
        ; gcrRegs +[eax]
        cmp      dword ptr [eax], ecx
        je       SHORT G_M31598_IG06
@@ -135,7 +134,7 @@ G_M31598_IG06:        ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefR
 G_M31598_IG07:        ; bbWeight=2, gcVars=00000001 {V13}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[eax]
        ; GC ptr vars +{V00 V13}
-       mov      eax, gword ptr [ebp-0x24]
+       mov      eax, gword ptr [ebp-0x28]
        ; gcrRegs +[eax]
                        ;; size=3 bbWeight=2 PerfScore 2.00
 G_M31598_IG08:        ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
@@ -180,29 +179,34 @@ G_M31598_IG11:        ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
        je       SHORT G_M31598_IG13
        cmp      dword ptr [ebp-0x14], 3
        je       SHORT G_M31598_IG13
-       mov      ecx, -1
+       mov      edx, -1
        cmp      dword ptr [ebp-0x1C], 0
-       cmovne   ecx, dword ptr [ebp-0x18]
-       mov      edx, gword ptr [esi+0x04]
-       ; gcrRegs +[edx]
-       mov      eax, dword ptr [edx+0x08]
-       cmp      ecx, eax
-       jge      SHORT G_M31598_IG16
-       mov      edx, gword ptr [edx+0x04]
-       mov      esi, edx
-       cmp      ecx, dword ptr [esi+0x04]
-       jae      SHORT G_M31598_IG15
-       mov      ecx, gword ptr [esi+4*ecx+0x08]
+       cmovne   edx, dword ptr [ebp-0x18]
+       mov      ecx, gword ptr [esi+0x04]
        ; gcrRegs +[ecx]
+       mov      eax, dword ptr [ecx+0x08]
+       cmp      edx, eax
+       jge      SHORT G_M31598_IG16
+       mov      ecx, gword ptr [ecx+0x04]
+       mov      esi, ecx
+       cmp      edx, dword ptr [esi+0x04]
+       jae      SHORT G_M31598_IG15
+       mov      edx, gword ptr [esi+4*edx+0x08]
+       ; gcrRegs +[edx]
+       mov      gword ptr [ebp-0x24], edx
+       ; GC ptr vars +{V07}
        mov      esi, -1
        ; gcrRegs -[esi]
        cmp      dword ptr [ebp-0x14], 0
        cmovne   esi, dword ptr [ebp-0x10]
        cmp      esi, eax
        jge      SHORT G_M31598_IG16
-       cmp      esi, dword ptr [edx+0x04]
+       cmp      esi, dword ptr [ecx+0x04]
        jae      SHORT G_M31598_IG15
-       mov      edx, gword ptr [edx+4*esi+0x08]
+       mov      ecx, gword ptr [ecx+4*esi+0x08]
+       mov      edx, ecx
+       mov      ecx, gword ptr [ebp-0x24]
+       ; GC ptr vars -{V07}
        call     [Microsoft.CodeAnalysis.CSharp.Binder:NameAndArityMatchRecursively(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):ubyte]
        ; gcrRegs -[ecx edx]
        test     eax, eax
@@ -214,7 +218,7 @@ G_M31598_IG11:        ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
        jae      SHORT G_M31598_IG15
        mov      eax, gword ptr [ebx+4*eax+0x08]
        ; gcrRegs +[eax]
-                       ;; size=107 bbWeight=0.50 PerfScore 24.88
+                       ;; size=115 bbWeight=0.50 PerfScore 26.00
 G_M31598_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
@@ -246,6 +250,6 @@ G_M31598_IG16:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 349, prolog size 23, PerfScore 271.75, instruction count 124, allocated bytes for code 349 (MethodHash=5b978491) for method Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
+; Total bytes of code 357, prolog size 23, PerfScore 272.88, instruction count 127, allocated bytes for code 357 (MethodHash=5b978491) for method Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
 ; ============================================================
 

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 185 96 16 73 -1,223 +145
benchmarks.run_pgo.windows.x86.checked.mch 4,326 777 1,593 1,956 -10,761 +3,393
benchmarks.run_tiered.windows.x86.checked.mch 167 88 14 65 -1,053 +121
coreclr_tests.run.windows.x86.checked.mch 3,428 2,782 258 388 -39,884 +720
libraries.crossgen2.windows.x86.checked.mch 757 334 68 355 -3,614 +436
libraries.pmi.windows.x86.checked.mch 1,141 525 85 531 -5,427 +763
libraries_tests.run.windows.x86.Release.mch 9,303 7,014 974 1,315 -123,144 +4,109
librariestestsnotieredcompilation.run.windows.x86.Release.mch 1,299 658 77 564 -7,578 +866
realworld.run.windows.x86.checked.mch 195 114 16 65 -1,315 +721
20,801 12,388 3,101 5,312 -193,999 +11,274

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,469 4 24,465 13 (0.05%) 19 (0.08%)
benchmarks.run_pgo.windows.x86.checked.mch 119,503 42,004 77,499 348 (0.29%) 360 (0.30%)
benchmarks.run_tiered.windows.x86.checked.mch 47,891 28,726 19,165 11 (0.02%) 16 (0.03%)
coreclr_tests.run.windows.x86.checked.mch 574,817 320,010 254,807 569 (0.10%) 590 (0.10%)
libraries.crossgen2.windows.x86.checked.mch 241,904 15 241,889 16 (0.01%) 23 (0.01%)
libraries.pmi.windows.x86.checked.mch 303,511 6 303,505 707 (0.23%) 721 (0.24%)
libraries_tests.run.windows.x86.Release.mch 632,833 429,177 203,656 2,910 (0.46%) 2,976 (0.47%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 315,227 21,872 293,355 508 (0.16%) 528 (0.17%)
realworld.run.windows.x86.checked.mch 35,964 3 35,961 11 (0.03%) 18 (0.05%)
2,296,119 841,817 1,454,302 5,093 (0.22%) 5,251 (0.23%)

jit-analyze output

benchmarks.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7104846 (overridden on cmd)
Total bytes of diff: 7103768 (overridden on cmd)
Total bytes of delta: -1078 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 5387.dasm (1.47 % of base)
          23 : 14537.dasm (1.19 % of base)
          15 : 22900.dasm (8.11 % of base)
          12 : 12542.dasm (0.60 % of base)
          12 : 15181.dasm (0.71 % of base)
          10 : 12082.dasm (0.58 % of base)
           8 : 104.dasm (2.05 % of base)
           6 : 5663.dasm (1.01 % of base)
           6 : 5677.dasm (0.40 % of base)
           3 : 23517.dasm (1.00 % of base)
           3 : 15194.dasm (0.11 % of base)
           3 : 12377.dasm (0.12 % of base)
           2 : 23519.dasm (0.44 % of base)
           2 : 1885.dasm (0.17 % of base)
           2 : 23518.dasm (0.13 % of base)
           2 : 24204.dasm (0.21 % of base)

Top file improvements (bytes):
         -97 : 15014.dasm (-4.97 % of base)
         -94 : 11906.dasm (-7.13 % of base)
         -69 : 23537.dasm (-4.69 % of base)
         -62 : 5397.dasm (-0.70 % of base)
         -57 : 22815.dasm (-11.18 % of base)
         -45 : 8136.dasm (-0.47 % of base)
         -37 : 5826.dasm (-2.06 % of base)
         -25 : 2556.dasm (-1.95 % of base)
         -24 : 1464.dasm (-3.93 % of base)
         -24 : 3811.dasm (-1.73 % of base)
         -24 : 15017.dasm (-3.54 % of base)
         -24 : 8373.dasm (-1.49 % of base)
         -20 : 16799.dasm (-5.71 % of base)
         -18 : 21575.dasm (-1.98 % of base)
         -17 : 9521.dasm (-3.07 % of base)
         -16 : 12496.dasm (-1.21 % of base)
         -16 : 1462.dasm (-3.28 % of base)
         -16 : 15015.dasm (-3.27 % of base)
         -16 : 15143.dasm (-0.52 % of base)
         -16 : 23524.dasm (-13.91 % of base)

52 total files with Code Size differences (36 improved, 16 regressed), 22 unchanged.

Top method regressions (bytes):
          36 (1.47 % of base) : 5387.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
          23 (1.19 % of base) : 14537.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (FullOpts)
          15 (8.11 % of base) : 22900.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
          12 (0.71 % of base) : 15181.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
          12 (0.60 % of base) : 12542.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
          10 (0.58 % of base) : 12082.dasm - Utf8Json.Formatters.ListFormatter`1[int]:Serialize(byref,System.Collections.Generic.List`1[int],Utf8Json.IJsonFormatterResolver):this (FullOpts)
           8 (2.05 % of base) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
           6 (1.01 % of base) : 5663.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (FullOpts)
           6 (0.40 % of base) : 5677.dasm - Sigil.Impl.VerifiableTracker:GetLegalTransitions(Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition],Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]]):Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition]:this (FullOpts)
           3 (0.11 % of base) : 15194.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String):System.Reflection.Emit.LocalBuilder:this (FullOpts)
           3 (0.12 % of base) : 12377.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
           3 (1.00 % of base) : 23517.dasm - V8.Crypto.BigInteger:dLShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
           2 (0.21 % of base) : 24204.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
           2 (0.17 % of base) : 1885.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (FullOpts)
           2 (0.13 % of base) : 23518.dasm - V8.Crypto.BigInteger:divRemTo(V8.Crypto.BigInteger,V8.Crypto.BigInteger,V8.Crypto.BigInteger):this (FullOpts)
           2 (0.44 % of base) : 23519.dasm - V8.Crypto.BigInteger:lShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)

Top method improvements (bytes):
         -97 (-4.97 % of base) : 15014.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
         -94 (-7.13 % of base) : 11906.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
         -69 (-4.69 % of base) : 23537.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
         -62 (-0.70 % of base) : 5397.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -57 (-11.18 % of base) : 22815.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
         -45 (-0.47 % of base) : 8136.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -37 (-2.06 % of base) : 5826.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:UnionAwareWriteMembers(ubyte,ubyte,System.Type,System.Collections.Generic.List`1[System.Reflection.MemberInfo],Sigil.Local,Sigil.Local,byref,Jil.Serialize.InlineSerializer`1+WriteMemberDelegate[System.__Canon]):this (FullOpts)
         -25 (-1.95 % of base) : 2556.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (FullOpts)
         -24 (-1.49 % of base) : 8373.dasm - Newtonsoft.Json.Serialization.JsonArrayContract:.ctor(System.Type):this (FullOpts)
         -24 (-3.93 % of base) : 1464.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
         -24 (-1.73 % of base) : 3811.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (FullOpts)
         -24 (-3.54 % of base) : 15017.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (FullOpts)
         -20 (-5.71 % of base) : 16799.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
         -18 (-1.98 % of base) : 21575.dasm - System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -17 (-3.07 % of base) : 9521.dasm - System.Threading.Channels.ChannelUtilities:WakeUpWaiters(byref,ubyte,System.Exception) (FullOpts)
         -16 (-3.28 % of base) : 1462.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (FullOpts)
         -16 (-0.52 % of base) : 15143.dasm - System.Runtime.Serialization.Json.XmlJsonReader:Read():ubyte:this (FullOpts)
         -16 (-1.21 % of base) : 12496.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartElement(System.String,System.String,System.String):this (FullOpts)
         -16 (-3.27 % of base) : 15015.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (FullOpts)
         -16 (-13.91 % of base) : 23524.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)

Top method regressions (percentages):
          15 (8.11 % of base) : 22900.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
           8 (2.05 % of base) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
          36 (1.47 % of base) : 5387.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
          23 (1.19 % of base) : 14537.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (FullOpts)
           6 (1.01 % of base) : 5663.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (FullOpts)
           3 (1.00 % of base) : 23517.dasm - V8.Crypto.BigInteger:dLShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
          12 (0.71 % of base) : 15181.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
          12 (0.60 % of base) : 12542.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
          10 (0.58 % of base) : 12082.dasm - Utf8Json.Formatters.ListFormatter`1[int]:Serialize(byref,System.Collections.Generic.List`1[int],Utf8Json.IJsonFormatterResolver):this (FullOpts)
           2 (0.44 % of base) : 23519.dasm - V8.Crypto.BigInteger:lShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
           6 (0.40 % of base) : 5677.dasm - Sigil.Impl.VerifiableTracker:GetLegalTransitions(Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition],Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]]):Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition]:this (FullOpts)
           2 (0.21 % of base) : 24204.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
           2 (0.17 % of base) : 1885.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (FullOpts)
           2 (0.13 % of base) : 23518.dasm - V8.Crypto.BigInteger:divRemTo(V8.Crypto.BigInteger,V8.Crypto.BigInteger,V8.Crypto.BigInteger):this (FullOpts)
           3 (0.12 % of base) : 12377.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
           3 (0.11 % of base) : 15194.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String):System.Reflection.Emit.LocalBuilder:this (FullOpts)

Top method improvements (percentages):
          -8 (-14.04 % of base) : 4727.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
         -16 (-13.91 % of base) : 23524.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
         -57 (-11.18 % of base) : 22815.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
         -12 (-10.17 % of base) : 24384.dasm - System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -15 (-9.32 % of base) : 6216.dasm - System.Diagnostics.Tracing.EventSource:IsEnabledByDefault(int,ubyte,int,long):ubyte:this (FullOpts)
          -9 (-8.33 % of base) : 24450.dasm - Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (FullOpts)
          -7 (-7.45 % of base) : 4803.dasm - System.IO.Compression.DeflateStream:ReadByte():int:this (FullOpts)
         -94 (-7.13 % of base) : 11906.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
          -5 (-5.75 % of base) : 23502.dasm - V8.Crypto.BigInteger:bitLength():int:this (FullOpts)
         -20 (-5.71 % of base) : 16799.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
         -97 (-4.97 % of base) : 15014.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
         -14 (-4.95 % of base) : 3539.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (FullOpts)
         -69 (-4.69 % of base) : 23537.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
         -24 (-3.93 % of base) : 1464.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
         -12 (-3.86 % of base) : 22890.dasm - System.Collections.SortedList:.ctor(System.Collections.IDictionary,System.Collections.IComparer):this (FullOpts)
          -6 (-3.55 % of base) : 1477.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (FullOpts)
         -24 (-3.54 % of base) : 15017.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (FullOpts)
         -16 (-3.28 % of base) : 1462.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (FullOpts)
          -7 (-3.27 % of base) : 873.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (FullOpts)
         -16 (-3.27 % of base) : 15015.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (FullOpts)


benchmarks.run_pgo.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45219159 (overridden on cmd)
Total bytes of diff: 45211791 (overridden on cmd)
Total bytes of delta: -7368 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 14420.dasm (1.46 % of base)
          27 : 49513.dasm (1.40 % of base)
          13 : 69702.dasm (0.72 % of base)
          12 : 32206.dasm (0.60 % of base)
          10 : 81136.dasm (0.72 % of base)
           9 : 39519.dasm (0.35 % of base)
           8 : 246.dasm (2.05 % of base)
           8 : 36347.dasm (1.71 % of base)
           6 : 110889.dasm (0.41 % of base)
           6 : 15188.dasm (0.33 % of base)
           6 : 21237.dasm (0.40 % of base)
           6 : 62236.dasm (0.44 % of base)
           6 : 100710.dasm (0.33 % of base)
           6 : 21174.dasm (1.01 % of base)
           6 : 93560.dasm (0.33 % of base)
           6 : 88893.dasm (0.33 % of base)
           6 : 97594.dasm (0.33 % of base)
           5 : 22510.dasm (1.79 % of base)
           5 : 44937.dasm (1.61 % of base)
           5 : 76143.dasm (2.63 % of base)

Top file improvements (bytes):
        -200 : 14403.dasm (-6.88 % of base)
        -184 : 70361.dasm (-9.12 % of base)
        -169 : 81024.dasm (-12.12 % of base)
        -168 : 33148.dasm (-7.69 % of base)
        -150 : 30176.dasm (-8.93 % of base)
        -142 : 56063.dasm (-9.02 % of base)
        -130 : 81166.dasm (-2.55 % of base)
        -114 : 14207.dasm (-7.51 % of base)
        -112 : 114111.dasm (-5.98 % of base)
         -96 : 33847.dasm (-5.63 % of base)
         -95 : 53745.dasm (-4.94 % of base)
         -88 : 33895.dasm (-5.42 % of base)
         -87 : 27697.dasm (-8.81 % of base)
         -82 : 68004.dasm (-5.05 % of base)
         -80 : 106937.dasm (-6.01 % of base)
         -76 : 10115.dasm (-4.57 % of base)
         -71 : 33135.dasm (-3.16 % of base)
         -71 : 107049.dasm (-4.97 % of base)
         -70 : 9947.dasm (-7.07 % of base)
         -69 : 109253.dasm (-4.69 % of base)

85 total files with Code Size differences (50 improved, 35 regressed), 20 unchanged.

Top method regressions (bytes):
          36 (1.46 % of base) : 14420.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
          27 (1.40 % of base) : 49513.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
          13 (0.72 % of base) : 69702.dasm - ProtoBuf.Meta.ValueMember:BuildSerializer():ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode:this (Instrumented Tier0)
          12 (0.60 % of base) : 32206.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
          10 (0.72 % of base) : 81136.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:<EmitInstanceCallExpression>g__emitArgumentsAndCallEpilogue|152_2(Microsoft.CodeAnalysis.CSharp.BoundCall,int,int):this (Instrumented Tier0)
           9 (0.35 % of base) : 39519.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String,System.String):System.Reflection.Emit.LocalBuilder:this (Tier0-FullOpts)
           8 (1.71 % of base) : 36347.dasm - System.Globalization.Ordinal:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (Tier1)
           8 (2.05 % of base) : 246.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
           6 (1.01 % of base) : 21174.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (Tier0-FullOpts)
           6 (0.40 % of base) : 21237.dasm - Sigil.Impl.VerifiableTracker:GetLegalTransitions(Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition],Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]]):Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition]:this (Tier0-FullOpts)
           6 (0.41 % of base) : 110889.dasm - System.IO.RandomAccess:ReadSyncUsingAsyncHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Span`1[ubyte],long):int (Tier1)
           6 (0.44 % of base) : 62236.dasm - System.IO.RandomAccess:WriteSyncUsingAsyncHandle(Microsoft.Win32.SafeHandles.SafeFileHandle,System.ReadOnlySpan`1[ubyte],long) (Tier1)
           6 (0.33 % of base) : 15188.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
           6 (0.33 % of base) : 100710.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
           6 (0.33 % of base) : 93560.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
           6 (0.33 % of base) : 88893.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
           6 (0.33 % of base) : 97594.dasm - System.Text.Json.Serialization.JsonConverter`1[System.__Canon]:TryWrite(System.Text.Json.Utf8JsonWriter,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (Tier1)
           5 (1.91 % of base) : 89671.dasm - Exceptions.Handling:Throw(int):this (Instrumented Tier0)
           5 (2.63 % of base) : 76143.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSyntaxTreeOrdinal(Microsoft.CodeAnalysis.SyntaxTree):int:this (Instrumented Tier0)
           5 (1.52 % of base) : 77823.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Instrumented Tier0)

Top method improvements (bytes):
        -200 (-6.88 % of base) : 14403.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (Instrumented Tier0)
        -184 (-9.12 % of base) : 70361.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeValue(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,Newtonsoft.Json.Serialization.JsonContainerContract,Newtonsoft.Json.Serialization.JsonProperty):this (Instrumented Tier0)
        -169 (-12.12 % of base) : 81024.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitConstantValue(Microsoft.CodeAnalysis.ConstantValue):this (Instrumented Tier0)
        -168 (-7.69 % of base) : 33148.dasm - System.Xml.Serialization.FieldModel:.ctor(System.Reflection.MemberInfo,System.Type,System.Xml.Serialization.TypeDesc):this (Instrumented Tier0)
        -150 (-8.93 % of base) : 30176.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
        -142 (-9.02 % of base) : 56063.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
        -130 (-2.55 % of base) : 81166.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Instrumented Tier0)
        -114 (-7.51 % of base) : 14207.dasm - System.Linq.Expressions.Expression:Call(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.MethodCallExpression (Instrumented Tier0)
        -112 (-5.98 % of base) : 114111.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:CreateObjectContract(System.Type):Newtonsoft.Json.Serialization.JsonObjectContract:this (Instrumented Tier0)
         -96 (-5.63 % of base) : 33847.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteSourceBegin(System.String):this (Instrumented Tier0)
         -95 (-4.94 % of base) : 53745.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
         -88 (-5.42 % of base) : 33895.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:ILGenElseString(System.String):this (Instrumented Tier0)
         -87 (-8.81 % of base) : 27697.dasm - System.Linq.Expressions.Expression:GetUserDefinedBinaryOperator(int,System.String,System.Linq.Expressions.Expression,System.Linq.Expressions.Expression,ubyte):System.Linq.Expressions.BinaryExpression (Instrumented Tier0)
         -82 (-5.05 % of base) : 68004.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:InternalDeserialize(System.Runtime.Serialization.XmlReaderDelegator,System.String,System.String,System.Type,byref):System.Object:this (Instrumented Tier0)
         -80 (-6.01 % of base) : 106937.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitBranchComparison(ubyte,System.Linq.Expressions.BinaryExpression,System.Reflection.Emit.Label):this (Instrumented Tier0)
         -76 (-4.57 % of base) : 10115.dasm - ProtoBuf.Internal.Serializers.PropertyDecorator:EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (Instrumented Tier0)
         -71 (-4.97 % of base) : 107049.dasm - System.Net.Sockets.Socket:ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs,ubyte,ubyte):ubyte:this (Instrumented Tier0)
         -71 (-3.16 % of base) : 33135.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportTypeMapping(System.Xml.Serialization.TypeModel,System.String,int,System.String,System.Xml.Serialization.XmlAttributes,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):System.Xml.Serialization.TypeMapping:this (Instrumented Tier0)
         -70 (-7.07 % of base) : 9947.dasm - ProtoBuf.Serializers.RepeatedSerializers:TryGetRepeatedProvider(System.Type):ProtoBuf.Serializers.RepeatedSerializerStub (Instrumented Tier0)
         -69 (-4.69 % of base) : 109253.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)

Top method regressions (percentages):
           5 (3.07 % of base) : 33839.dasm - System.Xml.Serialization.CodeGenerator:get_ReturnLocal():System.Reflection.Emit.LocalBuilder:this (Instrumented Tier0)
           5 (2.92 % of base) : 81467.dasm - System.Security.Cryptography.HashAlgorithm:CaptureHashCodeAndReinitialize():ubyte[]:this (Instrumented Tier0)
           5 (2.79 % of base) : 6997.dasm - System.IO.Compression.ZLibNative+ZLibStreamHandle:EnsureState(int):this (Instrumented Tier0)
           5 (2.67 % of base) : 27641.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitParameterExpression(System.Linq.Expressions.Expression):this (Instrumented Tier0)
           5 (2.63 % of base) : 76143.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSyntaxTreeOrdinal(Microsoft.CodeAnalysis.SyntaxTree):int:this (Instrumented Tier0)
           5 (2.46 % of base) : 80767.dasm - Microsoft.CodeAnalysis.MetadataHelpers:CheckAssemblyOrModuleName(System.String,Microsoft.CodeAnalysis.CommonMessageProvider,int,Microsoft.CodeAnalysis.DiagnosticBag) (Instrumented Tier0)
           5 (2.39 % of base) : 88384.dasm - System.Xml.XmlBaseReader:ReadContentAsDateTime():System.DateTime:this (Instrumented Tier0)
           8 (2.05 % of base) : 246.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
           5 (1.91 % of base) : 89671.dasm - Exceptions.Handling:Throw(int):this (Instrumented Tier0)
           5 (1.79 % of base) : 84565.dasm - Newtonsoft.Json.JsonWriter:UpdateCurrentState():this (Instrumented Tier0)
           5 (1.79 % of base) : 22510.dasm - Sigil.Emit`1[System.__Canon]:Seal(int):this (Instrumented Tier0)
           8 (1.71 % of base) : 36347.dasm - System.Globalization.Ordinal:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (Tier1)
           5 (1.61 % of base) : 44937.dasm - System.Resources.ManifestBasedResourceGroveler:UltimateFallbackFixup(System.Globalization.CultureInfo):System.Globalization.CultureInfo:this (Instrumented Tier0)
           5 (1.52 % of base) : 77823.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:Visit(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Instrumented Tier0)
          36 (1.46 % of base) : 14420.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
           3 (1.43 % of base) : 12447.dasm - System.Lazy`1[System.__Canon]:ViaFactory(int):this (Instrumented Tier0)
           3 (1.43 % of base) : 81375.dasm - System.Lazy`1[System.Collections.Immutable.ImmutableArray`1[System.Reflection.PortableExecutable.PEBuilder+Section]]:ViaFactory(int):this (Instrumented Tier0)
          27 (1.40 % of base) : 49513.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
           5 (1.35 % of base) : 30150.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:CreateShouldSerializeTest(System.Reflection.MemberInfo):System.Predicate`1[System.Object]:this (Instrumented Tier0)
           5 (1.34 % of base) : 55166.dasm - System.Text.Json.WriteStack:Initialize(System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Object,ubyte,ubyte):this (Instrumented Tier0)

Top method improvements (percentages):
         -18 (-16.67 % of base) : 77849.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)
         -20 (-14.93 % of base) : 50.dasm - System.Buffer:Memmove[ushort](byref,byref,uint) (Instrumented Tier0)
         -11 (-14.29 % of base) : 28474.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
         -11 (-14.29 % of base) : 31776.dasm - Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
         -16 (-13.91 % of base) : 109240.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (Tier0-FullOpts)
          -8 (-13.56 % of base) : 11462.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (Tier1)
         -12 (-13.19 % of base) : 28914.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 50897.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 64900.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 104519.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 115661.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 45628.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 49412.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 93243.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 105475.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 21236.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 67527.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 91389.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 79301.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-13.19 % of base) : 95356.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)


benchmarks.run_tiered.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9509296 (overridden on cmd)
Total bytes of diff: 9508364 (overridden on cmd)
Total bytes of delta: -932 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          36 : 14038.dasm (1.47 % of base)
          23 : 28583.dasm (1.19 % of base)
          12 : 24938.dasm (0.60 % of base)
          10 : 19954.dasm (0.58 % of base)
           8 : 239.dasm (2.05 % of base)
           6 : 15116.dasm (1.01 % of base)
           6 : 15164.dasm (0.40 % of base)
           6 : 17827.dasm (1.95 % of base)
           3 : 30018.dasm (0.11 % of base)
           3 : 46142.dasm (1.00 % of base)
           2 : 47640.dasm (0.21 % of base)
           2 : 10302.dasm (0.17 % of base)
           2 : 46143.dasm (0.13 % of base)
           2 : 46144.dasm (0.44 % of base)

Top file improvements (bytes):
         -95 : 28951.dasm (-4.94 % of base)
         -69 : 46166.dasm (-4.69 % of base)
         -62 : 14051.dasm (-0.70 % of base)
         -57 : 44773.dasm (-11.18 % of base)
         -45 : 17937.dasm (-0.47 % of base)
         -37 : 15511.dasm (-2.06 % of base)
         -25 : 10420.dasm (-1.95 % of base)
         -24 : 28956.dasm (-3.54 % of base)
         -24 : 14487.dasm (-3.93 % of base)
         -23 : 25091.dasm (-4.18 % of base)
         -17 : 20515.dasm (-3.07 % of base)
         -16 : 30040.dasm (-1.21 % of base)
         -16 : 20646.dasm (-3.28 % of base)
         -16 : 30996.dasm (-3.27 % of base)
         -16 : 46153.dasm (-13.91 % of base)
         -16 : 46631.dasm (-4.08 % of base)
         -14 : 12531.dasm (-4.95 % of base)
         -14 : 31912.dasm (-9.40 % of base)
         -14 : 4926.dasm (-3.07 % of base)
         -13 : 10079.dasm (-0.62 % of base)

46 total files with Code Size differences (32 improved, 14 regressed), 25 unchanged.

Top method regressions (bytes):
          36 (1.47 % of base) : 14038.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
          23 (1.19 % of base) : 28583.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
          12 (0.60 % of base) : 24938.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
          10 (0.58 % of base) : 19954.dasm - Utf8Json.Formatters.ListFormatter`1[int]:Serialize(byref,System.Collections.Generic.List`1[int],Utf8Json.IJsonFormatterResolver):this (Tier0-FullOpts)
           8 (2.05 % of base) : 239.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
           6 (1.01 % of base) : 15116.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (Tier0-FullOpts)
           6 (0.40 % of base) : 15164.dasm - Sigil.Impl.VerifiableTracker:GetLegalTransitions(Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition],Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]]):Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition]:this (Tier0-FullOpts)
           6 (1.95 % of base) : 17827.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (Tier1)
           3 (0.11 % of base) : 30018.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String):System.Reflection.Emit.LocalBuilder:this (Tier0-FullOpts)
           3 (1.00 % of base) : 46142.dasm - V8.Crypto.BigInteger:dLShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
           2 (0.21 % of base) : 47640.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (Tier0-FullOpts)
           2 (0.17 % of base) : 10302.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (Tier0-FullOpts)
           2 (0.13 % of base) : 46143.dasm - V8.Crypto.BigInteger:divRemTo(V8.Crypto.BigInteger,V8.Crypto.BigInteger,V8.Crypto.BigInteger):this (Tier0-FullOpts)
           2 (0.44 % of base) : 46144.dasm - V8.Crypto.BigInteger:lShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)

Top method improvements (bytes):
         -95 (-4.94 % of base) : 28951.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
         -69 (-4.69 % of base) : 46166.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
         -62 (-0.70 % of base) : 14051.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -57 (-11.18 % of base) : 44773.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0-FullOpts)
         -45 (-0.47 % of base) : 17937.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
         -37 (-2.06 % of base) : 15511.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:UnionAwareWriteMembers(ubyte,ubyte,System.Type,System.Collections.Generic.List`1[System.Reflection.MemberInfo],Sigil.Local,Sigil.Local,byref,Jil.Serialize.InlineSerializer`1+WriteMemberDelegate[System.__Canon]):this (Tier0-FullOpts)
         -25 (-1.95 % of base) : 10420.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (Tier0-FullOpts)
         -24 (-3.93 % of base) : 14487.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
         -24 (-3.54 % of base) : 28956.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
         -23 (-4.18 % of base) : 25091.dasm - System.Text.Encoding:GetBytesWithFallback(uint,int,uint,int,int,int,System.Text.EncoderNLS):int:this (Tier0)
         -17 (-3.07 % of base) : 20515.dasm - System.Threading.Channels.ChannelUtilities:WakeUpWaiters(byref,ubyte,System.Exception) (Tier0-FullOpts)
         -16 (-3.28 % of base) : 20646.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (Tier1)
         -16 (-1.21 % of base) : 30040.dasm - System.Runtime.Serialization.Json.XmlJsonWriter:WriteStartElement(System.String,System.String,System.String):this (Tier1)
         -16 (-4.08 % of base) : 46631.dasm - System.Threading.Tests.Perf_Timer+<>c:<SynchronousContention>b__8_0():this (Tier0-FullOpts)
         -16 (-3.27 % of base) : 30996.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (Tier1)
         -16 (-13.91 % of base) : 46153.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (Tier0-FullOpts)
         -14 (-9.40 % of base) : 31912.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:CopyFromEachQueueToArray(System.__Canon[],int):int:this (Tier0-FullOpts)
         -14 (-3.07 % of base) : 4926.dasm - System.Text.Json.Tests.Perf_Deep:Setup():this (Tier0-FullOpts)
         -14 (-4.95 % of base) : 12531.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier0-FullOpts)
         -13 (-0.62 % of base) : 10079.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Transform[ulong](System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Func`3[System.__Canon,System.__Canon,ulong]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:this (Tier0-FullOpts)

Top method regressions (percentages):
           8 (2.05 % of base) : 239.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
           6 (1.95 % of base) : 17827.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (Tier1)
          36 (1.47 % of base) : 14038.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
          23 (1.19 % of base) : 28583.dasm - MessagePack.Formatters.ListFormatter`1[System.__Canon]:Serialize(byref,int,System.Collections.Generic.List`1[System.__Canon],MessagePack.IFormatterResolver):int:this (Tier0-FullOpts)
           6 (1.01 % of base) : 15116.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (Tier0-FullOpts)
           3 (1.00 % of base) : 46142.dasm - V8.Crypto.BigInteger:dLShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
          12 (0.60 % of base) : 24938.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (Tier0-FullOpts)
          10 (0.58 % of base) : 19954.dasm - Utf8Json.Formatters.ListFormatter`1[int]:Serialize(byref,System.Collections.Generic.List`1[int],Utf8Json.IJsonFormatterResolver):this (Tier0-FullOpts)
           2 (0.44 % of base) : 46144.dasm - V8.Crypto.BigInteger:lShiftTo(int,V8.Crypto.BigInteger):this (Tier0-FullOpts)
           6 (0.40 % of base) : 15164.dasm - Sigil.Impl.VerifiableTracker:GetLegalTransitions(Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition],Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]]):Sigil.Impl.LinqList`1[Sigil.Impl.StackTransition]:this (Tier0-FullOpts)
           2 (0.21 % of base) : 47640.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (Tier0-FullOpts)
           2 (0.17 % of base) : 10302.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (Tier0-FullOpts)
           2 (0.13 % of base) : 46143.dasm - V8.Crypto.BigInteger:divRemTo(V8.Crypto.BigInteger,V8.Crypto.BigInteger,V8.Crypto.BigInteger):this (Tier0-FullOpts)
           3 (0.11 % of base) : 30018.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String):System.Reflection.Emit.LocalBuilder:this (Tier0-FullOpts)

Top method improvements (percentages):
         -11 (-14.29 % of base) : 18249.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
         -11 (-14.29 % of base) : 23201.dasm - Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
          -8 (-14.04 % of base) : 17247.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (Tier1)
         -16 (-13.91 % of base) : 46153.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (Tier0-FullOpts)
          -9 (-12.86 % of base) : 11924.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[int](byref,byref,uint) (Tier0)
         -57 (-11.18 % of base) : 44773.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0-FullOpts)
         -12 (-10.17 % of base) : 47760.dasm - System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (Tier0-FullOpts)
         -14 (-9.40 % of base) : 31912.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:CopyFromEachQueueToArray(System.__Canon[],int):int:this (Tier0-FullOpts)
          -9 (-8.33 % of base) : 47747.dasm - Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (Tier0-FullOpts)
          -8 (-5.88 % of base) : 20645.dasm - Newtonsoft.Json.Utilities.DateTimeParser:Parse(ushort[],int,int):ubyte:this (Tier1)
          -5 (-5.75 % of base) : 46180.dasm - V8.Crypto.BigInteger:bitLength():int:this (Tier1)
          -9 (-5.73 % of base) : 11927.dasm - Microsoft.Extensions.Logging.EventSource.LoggingEventSource:SetEventData[System.__Canon](byref,byref,uint) (Tier0)
         -14 (-4.95 % of base) : 12531.dasm - System.Text.Json.Tests.Perf_Strings:Setup():this (Tier0-FullOpts)
         -95 (-4.94 % of base) : 28951.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (Tier0-FullOpts)
         -69 (-4.69 % of base) : 46166.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (Tier0-FullOpts)
         -23 (-4.18 % of base) : 25091.dasm - System.Text.Encoding:GetBytesWithFallback(uint,int,uint,int,int,int,System.Text.EncoderNLS):int:this (Tier0)
         -16 (-4.08 % of base) : 46631.dasm - System.Threading.Tests.Perf_Timer+<>c:<SynchronousContention>b__8_0():this (Tier0-FullOpts)
         -24 (-3.93 % of base) : 14487.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (Tier0-FullOpts)
         -12 (-3.86 % of base) : 44811.dasm - System.Collections.SortedList:.ctor(System.Collections.IDictionary,System.Collections.IComparer):this (Tier0-FullOpts)
          -6 (-3.55 % of base) : 42580.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (Tier1)


coreclr_tests.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 309170651 (overridden on cmd)
Total bytes of diff: 309131487 (overridden on cmd)
Total bytes of delta: -39164 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          80 : 518187.dasm (2.11 % of base)
          15 : 480957.dasm (0.84 % of base)
          12 : 232584.dasm (0.46 % of base)
          12 : 480709.dasm (0.59 % of base)
          12 : 480728.dasm (0.46 % of base)
          12 : 482187.dasm (0.56 % of base)
          10 : 375171.dasm (1.34 % of base)
          10 : 376365.dasm (1.34 % of base)
           8 : 285339.dasm (2.05 % of base)
           8 : 362985.dasm (1.92 % of base)
           8 : 517503.dasm (2.05 % of base)
           8 : 340791.dasm (2.05 % of base)
           8 : 361326.dasm (1.92 % of base)
           8 : 365071.dasm (0.75 % of base)
           8 : 560359.dasm (2.05 % of base)
           6 : 517132.dasm (7.41 % of base)
           6 : 168588.dasm (0.20 % of base)
           6 : 464203.dasm (2.07 % of base)
           6 : 150328.dasm (0.20 % of base)
           6 : 193312.dasm (2.07 % of base)

Top file improvements (bytes):
       -1390 : 506211.dasm (-4.39 % of base)
       -1186 : 505709.dasm (-3.84 % of base)
        -184 : 237183.dasm (-9.12 % of base)
        -177 : 369425.dasm (-12.05 % of base)
        -150 : 573886.dasm (-2.25 % of base)
        -150 : 234782.dasm (-8.93 % of base)
        -150 : 374452.dasm (-2.25 % of base)
        -142 : 236555.dasm (-9.02 % of base)
        -134 : 241491.dasm (-2.71 % of base)
        -128 : 194622.dasm (-8.56 % of base)
        -119 : 205174.dasm (-2.86 % of base)
        -119 : 250768.dasm (-2.86 % of base)
        -119 : 204519.dasm (-2.86 % of base)
        -119 : 249925.dasm (-2.86 % of base)
        -119 : 250748.dasm (-2.86 % of base)
        -119 : 204504.dasm (-2.86 % of base)
        -119 : 205237.dasm (-2.86 % of base)
        -119 : 249818.dasm (-2.86 % of base)
        -119 : 250100.dasm (-2.86 % of base)
        -114 : 195581.dasm (-7.51 % of base)

91 total files with Code Size differences (59 improved, 32 regressed), 20 unchanged.

Top method regressions (bytes):
          80 (2.11 % of base) : 518187.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
          15 (0.84 % of base) : 480957.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
          12 (0.56 % of base) : 482187.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
          12 (0.59 % of base) : 480709.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
          12 (0.46 % of base) : 480728.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String,System.String):System.Reflection.Emit.LocalBuilder:this (FullOpts)
          12 (0.46 % of base) : 232584.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String,System.String):System.Reflection.Emit.LocalBuilder:this (Tier0-FullOpts)
          10 (1.34 % of base) : 375171.dasm - System.IO.Strategies.BufferedFileStreamStrategy:FlushWrite():this (Tier1)
          10 (1.34 % of base) : 376365.dasm - System.IO.Strategies.BufferedFileStreamStrategy:FlushWrite():this (Tier1)
           8 (0.75 % of base) : 365071.dasm - System.IO.RandomAccess+<>c:<ReadAtOffsetAsync>b__19_0(System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy]):int:this (Tier1)
           8 (1.92 % of base) : 362985.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
           8 (2.05 % of base) : 517503.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
           8 (2.05 % of base) : 560359.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
           8 (2.05 % of base) : 285339.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
           8 (2.05 % of base) : 340791.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
           8 (1.92 % of base) : 361326.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
           6 (2.07 % of base) : 464203.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (FullOpts)
           6 (2.07 % of base) : 193312.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (Tier0-FullOpts)
           6 (7.41 % of base) : 517132.dasm - Runtime_88091:IsSubsetOf(System.Collections.Generic.List`1[NamedSet],int,int):ubyte (FullOpts)
           6 (0.20 % of base) : 168588.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)
           6 (0.20 % of base) : 150328.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Instrumented Tier1)

Top method improvements (bytes):
       -1390 (-4.39 % of base) : 506211.dasm - ulongMDArrTest:TestEntryPoint():int (FullOpts)
       -1186 (-3.84 % of base) : 505709.dasm - longMDArrTest:TestEntryPoint():int (FullOpts)
        -184 (-9.12 % of base) : 237183.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeValue(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,Newtonsoft.Json.Serialization.JsonContainerContract,Newtonsoft.Json.Serialization.JsonProperty):this (Instrumented Tier0)
        -177 (-12.05 % of base) : 369425.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory:CreateReadyToRunHelper(ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory+ReadyToRunHelperKey):ILCompiler.DependencyAnalysis.ISymbolNode:this (Instrumented Tier0)
        -150 (-8.93 % of base) : 234782.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
        -150 (-2.25 % of base) : 573886.dasm - Test_13662_b:TestEntryPoint():int (FullOpts)
        -150 (-2.25 % of base) : 374452.dasm - Test_13662_b:TestEntryPoint():int (Tier0-FullOpts)
        -142 (-9.02 % of base) : 236555.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
        -134 (-2.71 % of base) : 241491.dasm - BinderTracingTests.BinderEventListener:OnEventWritten(System.Diagnostics.Tracing.EventWrittenEventArgs):this (Instrumented Tier0)
        -128 (-8.56 % of base) : 194622.dasm - System.Linq.Expressions.Expression:Invoke(System.Linq.Expressions.Expression,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.InvocationExpression (Instrumented Tier0)
        -119 (-2.86 % of base) : 250748.dasm - Test_AbstractBase02:TestEntryPoint():int (Tier0)
        -119 (-2.86 % of base) : 249818.dasm - Test_AbstractBase03:TestEntryPoint():int (Tier0)
        -119 (-2.86 % of base) : 204504.dasm - Test_BaseClass02:TestEntryPoint():int (Tier0)
        -119 (-2.86 % of base) : 204519.dasm - Test_BaseClass03:TestEntryPoint():int (Tier0)
        -119 (-2.86 % of base) : 205174.dasm - Test_class01:TestEntryPoint():int (Tier0)
        -119 (-2.86 % of base) : 205237.dasm - Test_class01:TestEntryPoint():int (Tier0)
        -119 (-2.86 % of base) : 249925.dasm - Test_NestedBaseClass06:TestEntryPoint():int (Tier0)
        -119 (-2.86 % of base) : 250100.dasm - Test_NestedClass01:TestEntryPoint():int (Tier0)
        -119 (-2.86 % of base) : 250768.dasm - Test_NestedClass03:TestEntryPoint():int (Tier0)
        -114 (-7.51 % of base) : 195581.dasm - System.Linq.Expressions.Expression:Call(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.MethodCallExpression (Instrumented Tier0)

Top method regressions (percentages):
           6 (7.41 % of base) : 517132.dasm - Runtime_88091:IsSubsetOf(System.Collections.Generic.List`1[NamedSet],int,int):ubyte (FullOpts)
           5 (3.55 % of base) : 364931.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.TypeValidationChecker+<>c__DisplayClass10_0:<ValidateTypeWorker>g__ValidateTypeWorkerHelper|0(Internal.TypeSystem.TypeDesc):System.Threading.Tasks.Task`1[ubyte]:this (Instrumented Tier0)
           5 (3.38 % of base) : 372509.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.StringImportSignature:AppendMangledName(ILCompiler.NameMangler,Internal.Text.Utf8StringBuilder):this (Instrumented Tier0)
           5 (2.92 % of base) : 337296.dasm - System.CommandLine.Parsing.OptionResult:get_ArgumentConversionResult():System.CommandLine.Binding.ArgumentConversionResult:this (Instrumented Tier0)
           5 (2.92 % of base) : 236409.dasm - System.Security.Cryptography.HashAlgorithm:CaptureHashCodeAndReinitialize():ubyte[]:this (Instrumented Tier0)
           5 (2.79 % of base) : 338573.dasm - System.IO.Compression.ZLibNative+ZLibStreamHandle:EnsureState(int):this (Instrumented Tier0)
           5 (2.79 % of base) : 195566.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitDefaultExpression(System.Linq.Expressions.Expression):this (Instrumented Tier0)
           5 (2.67 % of base) : 194700.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitParameterExpression(System.Linq.Expressions.Expression):this (Instrumented Tier0)
           5 (2.63 % of base) : 227372.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:GetSyntaxTreeOrdinal(Microsoft.CodeAnalysis.SyntaxTree):int:this (Instrumented Tier0)
           5 (2.59 % of base) : 369883.dasm - Internal.IL.Stubs.PInvokeILEmitter:<EmitPInvokeCall>g__AllocateTargetNativeMethod|5_0(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.MethodSignature):Internal.IL.Stubs.PInvokeTargetNativeMethod (Instrumented Tier0)
           5 (2.56 % of base) : 372112.dasm - Internal.TypeSystem.TypeSystemHelpers:GetFullName(Internal.TypeSystem.DefType):System.String (Instrumented Tier0)
           5 (2.31 % of base) : 368669.dasm - ILCompiler.ProcessLinkerXmlBase:MatchType(Internal.TypeSystem.TypeDesc,System.Text.RegularExpressions.Regex,System.Xml.XPath.XPathNavigator):this (Instrumented Tier0)
           5 (2.27 % of base) : 370250.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.DelegateCtorSignature:.ctor(Internal.TypeSystem.TypeDesc,ILCompiler.DependencyAnalysis.IMethodNode,Internal.JitInterface.MethodWithToken):this (Instrumented Tier0)
          80 (2.11 % of base) : 518187.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
           6 (2.07 % of base) : 464203.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (FullOpts)
           6 (2.07 % of base) : 193312.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (Tier0-FullOpts)
           8 (2.05 % of base) : 517503.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
           8 (2.05 % of base) : 560359.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
           8 (2.05 % of base) : 285339.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)
           8 (2.05 % of base) : 340791.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (Tier0-FullOpts)

Top method improvements (percentages):
         -22 (-20.18 % of base) : 505330.dasm - Test_classarr_InnerProd.ArrayClass:.ctor(int):this (FullOpts)
         -14 (-19.18 % of base) : 503656.dasm - Test_10w5d.testout1+CL_0_1_1_5_5:.ctor():this (FullOpts)
         -14 (-19.18 % of base) : 509850.dasm - Test_10w5d.testout1+CL_0_1_1_5_5:.ctor():this (FullOpts)
         -14 (-19.18 % of base) : 503015.dasm - Test_10w5d.testout1+CL_0_5_1_3_5:.ctor():this (FullOpts)
         -14 (-19.18 % of base) : 509336.dasm - Test_10w5d.testout1+CL_0_5_1_3_5:.ctor():this (FullOpts)
         -22 (-19.13 % of base) : 505316.dasm - Arrayclass:.ctor(int):this (FullOpts)
         -14 (-18.92 % of base) : 503537.dasm - Test_10w5d.testout1+CL_0_1_6_5_4:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 509753.dasm - Test_10w5d.testout1+CL_0_1_6_5_4:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 509658.dasm - Test_10w5d.testout1+CL_0_2_5_2_3:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 503421.dasm - Test_10w5d.testout1+CL_0_2_5_2_3:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 509586.dasm - Test_10w5d.testout1+CL_0_3_2_1_3:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 503325.dasm - Test_10w5d.testout1+CL_0_3_2_1_3:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 503027.dasm - Test_10w5d.testout1+CL_0_5_1_2_1:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 509345.dasm - Test_10w5d.testout1+CL_0_5_1_2_1:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 502984.dasm - Test_10w5d.testout1+CL_0_5_2_3_6:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 509310.dasm - Test_10w5d.testout1+CL_0_5_2_3_6:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 502817.dasm - Test_10w5d.testout1+CL_0_6_2_1_3:.ctor():this (FullOpts)
         -14 (-18.92 % of base) : 509182.dasm - Test_10w5d.testout1+CL_0_6_2_1_3:.ctor():this (FullOpts)
         -18 (-18.75 % of base) : 369998.dasm - Internal.JitInterface.JitTypeNameFormatter:AppendNameForInstantiatedType(System.Text.StringBuilder,Internal.TypeSystem.DefType):this (Instrumented Tier0)
         -22 (-17.60 % of base) : 378158.dasm - testout1+CL_0_1_2_3_2:.ctor():this (FullOpts)


libraries.crossgen2.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 31620161 (overridden on cmd)
Total bytes of diff: 31616983 (overridden on cmd)
Total bytes of delta: -3178 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          80 : 149808.dasm (2.66 % of base)
          34 : 238895.dasm (4.37 % of base)
          34 : 238898.dasm (4.36 % of base)
          30 : 178406.dasm (4.54 % of base)
          29 : 209613.dasm (7.16 % of base)
          15 : 21996.dasm (7.89 % of base)
          14 : 168462.dasm (2.73 % of base)
          14 : 143626.dasm (2.73 % of base)
          11 : 218552.dasm (2.33 % of base)
           9 : 215478.dasm (2.47 % of base)
           8 : 22218.dasm (1.67 % of base)
           6 : 3276.dasm (1.34 % of base)
           6 : 99813.dasm (0.54 % of base)
           6 : 226966.dasm (2.08 % of base)
           6 : 3274.dasm (1.34 % of base)
           5 : 180972.dasm (2.17 % of base)
           5 : 219379.dasm (1.33 % of base)
           5 : 180844.dasm (2.17 % of base)
           5 : 96979.dasm (1.79 % of base)
           5 : 21998.dasm (2.02 % of base)

Top file improvements (bytes):
        -413 : 148225.dasm (-7.70 % of base)
        -114 : 218453.dasm (-0.51 % of base)
        -104 : 153745.dasm (-6.20 % of base)
         -98 : 151800.dasm (-6.64 % of base)
         -86 : 32108.dasm (-1.54 % of base)
         -73 : 156115.dasm (-2.49 % of base)
         -65 : 184654.dasm (-2.09 % of base)
         -48 : 149280.dasm (-23.76 % of base)
         -42 : 219173.dasm (-3.49 % of base)
         -38 : 81049.dasm (-5.80 % of base)
         -38 : 23813.dasm (-0.55 % of base)
         -37 : 125883.dasm (-4.07 % of base)
         -33 : 30736.dasm (-2.43 % of base)
         -29 : 37716.dasm (-1.55 % of base)
         -26 : 106741.dasm (-5.34 % of base)
         -25 : 140460.dasm (-1.71 % of base)
         -25 : 165259.dasm (-1.71 % of base)
         -24 : 128341.dasm (-5.90 % of base)
         -24 : 15214.dasm (-13.95 % of base)
         -24 : 233561.dasm (-6.00 % of base)

68 total files with Code Size differences (41 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
          80 (2.66 % of base) : 149808.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
          34 (4.36 % of base) : 238898.dasm - System.Net.Sockets.SocketPal:Receive(System.Net.Sockets.SafeSocketHandle,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,byref):int (FullOpts)
          34 (4.37 % of base) : 238895.dasm - System.Net.Sockets.SocketPal:Send(System.Net.Sockets.SafeSocketHandle,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,byref):int (FullOpts)
          30 (4.54 % of base) : 178406.dasm - System.IO.Packaging.PartBasedPackageProperties:SerializeDirtyProperties():this (FullOpts)
          29 (7.16 % of base) : 209613.dasm - System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (FullOpts)
          15 (7.89 % of base) : 21996.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
          14 (2.73 % of base) : 168462.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetTypes(Microsoft.CodeAnalysis.DiagnosticBag,System.Collections.Generic.HashSet`1[System.String]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.INamespaceTypeDefinition]:this (FullOpts)
          14 (2.73 % of base) : 143626.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetTypes(Microsoft.CodeAnalysis.DiagnosticBag,System.Collections.Generic.HashSet`1[System.String]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.INamespaceTypeDefinition]:this (FullOpts)
          11 (2.33 % of base) : 218552.dasm - Microsoft.VisualBasic.DateAndTime:WeekdayName(int,ubyte,int):System.String (FullOpts)
           9 (2.47 % of base) : 215478.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this (FullOpts)
           8 (1.67 % of base) : 22218.dasm - System.Globalization.Ordinal:ToUpperOrdinal(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
           6 (0.54 % of base) : 99813.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol+VB$StateMachine_72_GetMethodsToEmit:MoveNext():ubyte:this (FullOpts)
           6 (2.08 % of base) : 226966.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (FullOpts)
           6 (1.34 % of base) : 3274.dasm - System.MemoryExtensions:ToLowerInvariant(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
           6 (1.34 % of base) : 3276.dasm - System.MemoryExtensions:ToUpperInvariant(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
           5 (1.79 % of base) : 96979.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions:ComputeHashCode():int:this (FullOpts)
           5 (1.33 % of base) : 219379.dasm - Microsoft.VisualBasic.CompilerServices.IDOUtils:PackArguments(int,System.String[],System.Object[],byref,byref) (FullOpts)
           5 (2.02 % of base) : 21998.dasm - System.Array+SorterObjectArray:Heapsort(int,int):this (FullOpts)
           5 (2.17 % of base) : 180844.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:AppendFrom(System.__Canon[],int,int):this (FullOpts)
           5 (2.17 % of base) : 180972.dasm - System.Collections.Generic.SegmentedList`1[ubyte]:AppendFrom(ubyte[],int,int):this (FullOpts)

Top method improvements (bytes):
        -413 (-7.70 % of base) : 148225.dasm - System.Xml.Schema.XdrBuilder:.cctor() (FullOpts)
        -114 (-0.51 % of base) : 218453.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        -104 (-6.20 % of base) : 153745.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
         -98 (-6.64 % of base) : 151800.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
         -86 (-1.54 % of base) : 32108.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -73 (-2.49 % of base) : 156115.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadOutput():this (FullOpts)
         -65 (-2.09 % of base) : 184654.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:MergeSortCooperatively():this (FullOpts)
         -48 (-23.76 % of base) : 149280.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
         -42 (-3.49 % of base) : 219173.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindingScore(System.Reflection.ParameterInfo[],int[],System.Type[],ubyte,int):int:this (FullOpts)
         -38 (-5.80 % of base) : 81049.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbolExtensions:TransformToCanonicalFormFor(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol] (FullOpts)
         -38 (-0.55 % of base) : 23813.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -37 (-4.07 % of base) : 125883.dasm - Microsoft.Diagnostics.Tracing.Analysis.GC.TraceGC:ConvertMarkTimes():this (FullOpts)
         -33 (-2.43 % of base) : 30736.dasm - System.Data.ConstraintCollection:FinishInitConstraints():this (FullOpts)
         -29 (-1.55 % of base) : 37716.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompiler:CreateCompilation(System.IO.TextWriter,Microsoft.CodeAnalysis.TouchedFileLogger,Microsoft.CodeAnalysis.ErrorLogger,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult):Microsoft.CodeAnalysis.Compilation:this (FullOpts)
         -26 (-5.34 % of base) : 106741.dasm - System.Runtime.Serialization.Json.JsonClassDataContract+JsonClassDataContractCriticalHelper:CopyMembersAndCheckDuplicateNames():this (FullOpts)
         -25 (-1.71 % of base) : 140460.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver+<ProcessCompilationEventsAsync>d__132:MoveNext():this (FullOpts)
         -25 (-1.71 % of base) : 165259.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver+<ProcessCompilationEventsAsync>d__132:MoveNext():this (FullOpts)
         -24 (-6.00 % of base) : 233561.dasm - Newtonsoft.Json.Bson.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
         -24 (-5.90 % of base) : 128341.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseTime(byref):ubyte:this (FullOpts)
         -24 (-13.95 % of base) : 15214.dasm - System.Collections.Generic.List`1[System.__Canon]:ConvertAll[System.__Canon](System.Converter`2[System.__Canon,System.__Canon]):System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)

Top method regressions (percentages):
          15 (7.89 % of base) : 21996.dasm - System.Array+SorterObjectArray:SwapIfGreater(int,int):this (FullOpts)
          29 (7.16 % of base) : 209613.dasm - System.IO.Compression.DeflateStream:ReadCore(System.Span`1[ubyte]):int:this (FullOpts)
          30 (4.54 % of base) : 178406.dasm - System.IO.Packaging.PartBasedPackageProperties:SerializeDirtyProperties():this (FullOpts)
          34 (4.37 % of base) : 238895.dasm - System.Net.Sockets.SocketPal:Send(System.Net.Sockets.SafeSocketHandle,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,byref):int (FullOpts)
          34 (4.36 % of base) : 238898.dasm - System.Net.Sockets.SocketPal:Receive(System.Net.Sockets.SafeSocketHandle,System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,byref):int (FullOpts)
           2 (3.77 % of base) : 224281.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:IsSystemType(System.Reflection.TypeLoading.RoType):ubyte:this (FullOpts)
           2 (3.77 % of base) : 191315.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:IsSystemType(System.Reflection.TypeLoading.RoType):ubyte:this (FullOpts)
          14 (2.73 % of base) : 168462.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetTypes(Microsoft.CodeAnalysis.DiagnosticBag,System.Collections.Generic.HashSet`1[System.String]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.INamespaceTypeDefinition]:this (FullOpts)
          14 (2.73 % of base) : 143626.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetTypes(Microsoft.CodeAnalysis.DiagnosticBag,System.Collections.Generic.HashSet`1[System.String]):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.INamespaceTypeDefinition]:this (FullOpts)
          80 (2.66 % of base) : 149808.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
           4 (2.63 % of base) : 124104.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata3TemplateHATraceData:get_AppDomain():System.String:this (FullOpts)
           4 (2.61 % of base) : 124116.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata6TemplateHATraceData:get_HostReference():System.String:this (FullOpts)
           9 (2.47 % of base) : 215478.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this (FullOpts)
           4 (2.45 % of base) : 124117.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata6TemplateHATraceData:get_AppDomain():System.String:this (FullOpts)
           4 (2.42 % of base) : 18584.dasm - System.Runtime.Intrinsics.Vector512`1[int]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector512<T>,T>.Sum(System.Runtime.Intrinsics.Vector512`1[int]):int (FullOpts)
           4 (2.42 % of base) : 18953.dasm - System.Runtime.Intrinsics.Vector512`1[uint]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector512<T>,T>.Sum(System.Runtime.Intrinsics.Vector512`1[uint]):uint (FullOpts)
          11 (2.33 % of base) : 218552.dasm - Microsoft.VisualBasic.DateAndTime:WeekdayName(int,ubyte,int):System.String (FullOpts)
           5 (2.17 % of base) : 180844.dasm - System.Collections.Generic.SegmentedList`1[System.__Canon]:AppendFrom(System.__Canon[],int,int):this (FullOpts)
           5 (2.17 % of base) : 180972.dasm - System.Collections.Generic.SegmentedList`1[ubyte]:AppendFrom(ubyte[],int,int):this (FullOpts)
           6 (2.08 % of base) : 226966.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (FullOpts)

Top method improvements (percentages):
         -48 (-23.76 % of base) : 149280.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
         -13 (-19.12 % of base) : 226882.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
          -8 (-15.69 % of base) : 30542.dasm - System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
         -13 (-13.98 % of base) : 153299.dasm - System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
         -24 (-13.95 % of base) : 15214.dasm - System.Collections.Generic.List`1[System.__Canon]:ConvertAll[System.__Canon](System.Converter`2[System.__Canon,System.__Canon]):System.Collections.Generic.List`1[System.__Canon]:this (FullOpts)
         -23 (-13.37 % of base) : 180806.dasm - System.Collections.Generic.GrowableArray`1[System.__Canon]:Insert(int,System.__Canon):this (FullOpts)
          -8 (-12.70 % of base) : 30528.dasm - System.Data.Common.SqlStringStorage:Get(int):System.Object:this (FullOpts)
          -8 (-12.70 % of base) : 6490.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
         -12 (-11.76 % of base) : 13852.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -20 (-11.49 % of base) : 214914.dasm - System.Data.OleDb.OleDbDataReader:GetValues(System.Object[]):int:this (FullOpts)
          -4 (-10.00 % of base) : 30256.dasm - System.Data.Common.ObjectStorage:Copy(int,int):this (FullOpts)
          -4 (-10.00 % of base) : 30343.dasm - System.Data.Common.StringStorage:Copy(int,int):this (FullOpts)
         -12 (-10.00 % of base) : 185429.dasm - System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -21 (-10.00 % of base) : 152112.dasm - System.Xml.Schema.XdrBuilder:GetNextState(System.Xml.XmlQualifiedName):ubyte:this (FullOpts)
         -16 (-9.36 % of base) : 227275.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
         -15 (-9.26 % of base) : 22434.dasm - System.Diagnostics.Tracing.EventSource:IsEnabledByDefault(int,ubyte,int,long):ubyte:this (FullOpts)
         -20 (-8.44 % of base) : 202656.dasm - System.Data.Odbc.OdbcDataReader:GetOrdinalFromBaseColName(System.String,System.String):int:this (FullOpts)
         -20 (-8.30 % of base) : 128339.dasm - Newtonsoft.Json.Utilities.DateTimeParser:ParseDate(int):ubyte:this (FullOpts)
         -20 (-8.23 % of base) : 154544.dasm - System.Xml.Schema.XsdDateTime+Parser:ParseDate(int):ubyte:this (FullOpts)
         -16 (-8.12 % of base) : 35641.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:InitializeDependencies():this (FullOpts)


libraries.pmi.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 48795839 (overridden on cmd)
Total bytes of diff: 48791175 (overridden on cmd)
Total bytes of delta: -4664 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         103 : 169172.dasm (7.30 % of base)
         103 : 121357.dasm (7.30 % of base)
          82 : 147560.dasm (0.34 % of base)
          80 : 191558.dasm (2.06 % of base)
          36 : 178573.dasm (1.12 % of base)
          22 : 201709.dasm (7.24 % of base)
          17 : 195922.dasm (1.10 % of base)
          15 : 178560.dasm (0.84 % of base)
          12 : 178476.dasm (0.59 % of base)
          12 : 178481.dasm (0.46 % of base)
          12 : 178594.dasm (0.56 % of base)
          10 : 286188.dasm (1.66 % of base)
          10 : 241284.dasm (2.42 % of base)
           9 : 114808.dasm (3.56 % of base)
           9 : 127179.dasm (2.33 % of base)
           9 : 162729.dasm (3.56 % of base)
           9 : 251897.dasm (1.36 % of base)
           9 : 71194.dasm (1.39 % of base)
           8 : 30625.dasm (2.29 % of base)
           8 : 290038.dasm (0.57 % of base)

Top file improvements (bytes):
        -146 : 259439.dasm (-4.55 % of base)
        -104 : 211716.dasm (-1.89 % of base)
        -100 : 187839.dasm (-4.36 % of base)
         -94 : 184897.dasm (-7.13 % of base)
         -88 : 70947.dasm (-1.58 % of base)
         -77 : 188969.dasm (-2.09 % of base)
         -63 : 267460.dasm (-3.59 % of base)
         -59 : 84683.dasm (-7.52 % of base)
         -58 : 217375.dasm (-8.57 % of base)
         -48 : 189854.dasm (-23.41 % of base)
         -45 : 116.dasm (-0.47 % of base)
         -42 : 267407.dasm (-2.49 % of base)
         -41 : 121311.dasm (-5.93 % of base)
         -41 : 169126.dasm (-5.93 % of base)
         -38 : 267021.dasm (-1.23 % of base)
         -37 : 107190.dasm (-1.59 % of base)
         -36 : 107189.dasm (-2.27 % of base)
         -36 : 107191.dasm (-1.62 % of base)
         -36 : 65421.dasm (-1.64 % of base)
         -36 : 65423.dasm (-1.32 % of base)

75 total files with Code Size differences (44 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
         103 (7.30 % of base) : 169172.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],System.Collections.Generic.IComparer`1[ubyte]):int (FullOpts)
         103 (7.30 % of base) : 121357.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],System.Collections.Generic.IComparer`1[ubyte]):int (FullOpts)
          82 (0.34 % of base) : 147560.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
          80 (2.06 % of base) : 191558.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
          36 (1.12 % of base) : 178573.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadGetOnlyCollection(System.Runtime.Serialization.DataContracts.CollectionDataContract):this (FullOpts)
          22 (7.24 % of base) : 201709.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
          17 (1.10 % of base) : 195922.dasm - ILCompiler.ReadyToRunFileLayoutOptimizer:PettisHansenSort(System.Collections.Generic.List`1[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo]):System.Collections.Generic.List`1[ILCompiler.DependencyAnalysis.ReadyToRun.MethodWithGCInfo]:this (FullOpts)
          15 (0.84 % of base) : 178560.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
          12 (0.56 % of base) : 178594.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
          12 (0.59 % of base) : 178476.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
          12 (0.46 % of base) : 178481.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String,System.String):System.Reflection.Emit.LocalBuilder:this (FullOpts)
          10 (2.42 % of base) : 241284.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this (FullOpts)
          10 (1.66 % of base) : 286188.dasm - System.Security.Cryptography.RSABCrypt:TryEncrypt(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.RSAEncryptionPadding,byref):ubyte:this (FullOpts)
           9 (3.56 % of base) : 114808.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
           9 (3.56 % of base) : 162729.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
           9 (2.33 % of base) : 127179.dasm - Microsoft.Diagnostics.Tracing.Utilities.FastStream:ReadAsciiStringUpToLastBeforeTrue(ushort,System.Text.StringBuilder,System.Func`2[ubyte,ubyte]):this (FullOpts)
           9 (1.39 % of base) : 71194.dasm - System.Data.Index:GetRows(System.Data.Range):System.Data.DataRow[]:this (FullOpts)
           9 (1.36 % of base) : 251897.dasm - System.IO.Packaging.PartBasedPackageProperties:ValidateXsiType(System.Xml.XmlReader,System.Object,System.String) (FullOpts)
           8 (2.29 % of base) : 30625.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
           8 (0.57 % of base) : 290038.dasm - System.Speech.Internal.SrgsParser.XmlParser:ParseToken(System.Speech.Internal.SrgsParser.IElement,System.Xml.XmlReader):System.Speech.Internal.SrgsParser.IToken:this (FullOpts)

Top method improvements (bytes):
        -146 (-4.55 % of base) : 259439.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
        -104 (-1.89 % of base) : 211716.dasm - Newtonsoft.Json.JsonTextReader+<ParseValueAsync>d__8:MoveNext():this (FullOpts)
        -100 (-4.36 % of base) : 187839.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
         -94 (-7.13 % of base) : 184897.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
         -88 (-1.58 % of base) : 70947.dasm - System.Data.RBTree`1[ubyte]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -77 (-2.09 % of base) : 188969.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadOutput():this (FullOpts)
         -63 (-3.59 % of base) : 267460.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -59 (-7.52 % of base) : 84683.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbolExtensions:TransformToCanonicalFormFor(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol] (FullOpts)
         -58 (-8.57 % of base) : 217375.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:DownHeap(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],int,int,int,System.Comparison`1[ubyte]) (FullOpts)
         -48 (-23.41 % of base) : 189854.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
         -45 (-0.47 % of base) : 116.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -42 (-2.49 % of base) : 267407.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -41 (-5.93 % of base) : 121311.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:DownHeap(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],int,int,int,System.Comparison`1[ubyte]) (FullOpts)
         -41 (-5.93 % of base) : 169126.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`1[ubyte]:DownHeap(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],int,int,int,System.Comparison`1[ubyte]) (FullOpts)
         -38 (-1.23 % of base) : 267021.dasm - System.Net.Http.Http3RequestStream+<SendContentAsync>d__31:MoveNext():this (FullOpts)
         -37 (-1.59 % of base) : 107190.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNodeRemover+SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
         -36 (-1.64 % of base) : 65421.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNodeRemover+SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
         -36 (-1.32 % of base) : 65423.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNodeRemover+SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this (FullOpts)
         -36 (-2.27 % of base) : 107189.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNodeRemover+SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
         -36 (-1.62 % of base) : 107191.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNodeRemover+SyntaxRemover:AddTrivia(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxToken):this (FullOpts)

Top method regressions (percentages):
         103 (7.30 % of base) : 169172.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],System.Collections.Generic.IComparer`1[ubyte]):int (FullOpts)
         103 (7.30 % of base) : 121357.dasm - Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySortHelper`2[ubyte,System.Nullable`1[int]]:PickPivotAndPartition(Microsoft.CodeAnalysis.Collections.Internal.SegmentedArraySegment`1[ubyte],System.Span`1[System.Nullable`1[int]],System.Collections.Generic.IComparer`1[ubyte]):int (FullOpts)
          22 (7.24 % of base) : 201709.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
           9 (3.56 % of base) : 114808.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
           9 (3.56 % of base) : 162729.dasm - Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte]:SortAndRemoveDuplicates(System.Collections.Generic.IComparer`1[ubyte]):this (FullOpts)
           4 (2.76 % of base) : 143384.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata3TemplateHATraceData:get_AppDomain():System.String:this (FullOpts)
           4 (2.74 % of base) : 143396.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata6TemplateHATraceData:get_HostReference():System.String:this (FullOpts)
           6 (2.64 % of base) : 168969.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[ubyte]:FindLastIndex(int,int,System.Predicate`1[ubyte]):int:this (FullOpts)
           6 (2.64 % of base) : 121154.dasm - Microsoft.CodeAnalysis.Collections.SegmentedList`1[ubyte]:FindLastIndex(int,int,System.Predicate`1[ubyte]):int:this (FullOpts)
           4 (2.56 % of base) : 143397.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServer.Multidata6TemplateHATraceData:get_AppDomain():System.String:this (FullOpts)
          10 (2.42 % of base) : 241284.dasm - System.Data.OleDb.OleDbCommand:ApplyParameterBindings(System.Data.Common.UnsafeNativeMethods+ICommandWithParameters,System.Data.OleDb.tagDBPARAMBINDINFO[]):this (FullOpts)
           9 (2.33 % of base) : 127179.dasm - Microsoft.Diagnostics.Tracing.Utilities.FastStream:ReadAsciiStringUpToLastBeforeTrue(ushort,System.Text.StringBuilder,System.Func`2[ubyte,ubyte]):this (FullOpts)
           8 (2.29 % of base) : 30625.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
           3 (2.24 % of base) : 19631.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
           2 (2.11 % of base) : 202705.dasm - System.Collections.Generic.GrowableArray`1[System.__Canon]:Search[ubyte](ubyte,int,System.Func`3[ubyte,System.__Canon,int],byref):ubyte:this (FullOpts)
           6 (2.07 % of base) : 201298.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:Invoke():System.Dynamic.DynamicMetaObject:this (FullOpts)
           2 (2.06 % of base) : 202741.dasm - System.Collections.Generic.GrowableArray`1[ubyte]:Search[ubyte](ubyte,int,System.Func`3[ubyte,ubyte,int],byref):ubyte:this (FullOpts)
          80 (2.06 % of base) : 191558.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
           6 (1.95 % of base) : 293807.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (FullOpts)
           4 (1.87 % of base) : 71038.dasm - System.Data.RBTree`1[System.Numerics.Vector`1[float]]:Search(System.Numerics.Vector`1[float]):int:this (FullOpts)

Top method improvements (percentages):
         -48 (-23.41 % of base) : 189854.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
          -8 (-15.09 % of base) : 74021.dasm - System.Data.Common.SqlBinaryStorage:Get(int):System.Object:this (FullOpts)
         -13 (-14.29 % of base) : 180751.dasm - System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
         -23 (-13.86 % of base) : 202683.dasm - System.Collections.Generic.GrowableArray`1[System.__Canon]:Insert(int,System.__Canon):this (FullOpts)
         -20 (-12.50 % of base) : 201304.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
          -8 (-12.50 % of base) : 74006.dasm - System.Data.Common.SqlStringStorage:Get(int):System.Object:this (FullOpts)
          -4 (-10.53 % of base) : 73685.dasm - System.Data.Common.ObjectStorage:Copy(int,int):this (FullOpts)
         -28 (-10.33 % of base) : 286596.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedName+<EnumerateRelativeDistinguishedNames>d__15:MoveNext():ubyte:this (FullOpts)
          -9 (-10.23 % of base) : 208006.dasm - Newtonsoft.Json.Bson.BsonDataReader:PopContext():this (FullOpts)
          -9 (-10.23 % of base) : 211563.dasm - Newtonsoft.Json.Bson.BsonReader:PopContext():this (FullOpts)
         -12 (-10.17 % of base) : 145716.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceLoadedModules+<GetEnumerator>d__5:MoveNext():ubyte:this (FullOpts)
         -12 (-10.17 % of base) : 145762.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceModuleFiles+<System-Collections-Generic-IEnumerable<Microsoft-Diagnostics-Tracing-Etlx-TraceModuleFile>-GetEnumerator>d__7:MoveNext():ubyte:this (FullOpts)
         -12 (-10.17 % of base) : 145695.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses+<System-Collections-Generic-IEnumerable<Microsoft-Diagnostics-Tracing-Etlx-TraceProcess>-GetEnumerator>d__11:MoveNext():ubyte:this (FullOpts)
         -12 (-10.17 % of base) : 145698.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceProcesses+<System-Collections-IEnumerable-GetEnumerator>d__20:MoveNext():ubyte:this (FullOpts)
         -12 (-10.17 % of base) : 145710.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceThreads+<System-Collections-Generic-IEnumerable<Microsoft-Diagnostics-Tracing-Etlx-TraceThread>-GetEnumerator>d__0:MoveNext():ubyte:this (FullOpts)
         -11 (-9.91 % of base) : 146503.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:MapParameters(System.Nullable`1[int][],System.Object[]):this (FullOpts)
         -14 (-9.40 % of base) : 224489.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:CopyFromEachQueueToArray(System.__Canon[],int):int:this (FullOpts)
         -15 (-9.32 % of base) : 241604.dasm - System.Data.OleDb.OleDbDataReader:GetValues(System.Object[]):int:this (FullOpts)
          -9 (-8.91 % of base) : 171437.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+RegionBuilder:ExtendToInclude(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder):this (FullOpts)
          -9 (-8.91 % of base) : 123634.dasm - Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+RegionBuilder:ExtendToInclude(Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraphBuilder+BasicBlockBuilder):this (FullOpts)


libraries_tests.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 185793630 (overridden on cmd)
Total bytes of diff: 185674595 (overridden on cmd)
Total bytes of delta: -119035 (-0.06 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         181 : 27904.dasm (3.20 % of base)
          99 : 143375.dasm (1.41 % of base)
          91 : 129771.dasm (1.31 % of base)
          82 : 169024.dasm (0.34 % of base)
          82 : 76563.dasm (1.73 % of base)
          80 : 396102.dasm (1.88 % of base)
          52 : 116586.dasm (0.69 % of base)
          52 : 177079.dasm (0.69 % of base)
          52 : 280532.dasm (0.68 % of base)
          52 : 112687.dasm (0.69 % of base)
          52 : 225683.dasm (0.69 % of base)
          52 : 65012.dasm (0.68 % of base)
          52 : 119770.dasm (0.69 % of base)
          52 : 220876.dasm (0.69 % of base)
          52 : 381462.dasm (0.68 % of base)
          52 : 432460.dasm (0.69 % of base)
          52 : 631125.dasm (0.69 % of base)
          25 : 313991.dasm (1.28 % of base)
          22 : 86260.dasm (7.24 % of base)
          18 : 365126.dasm (7.86 % of base)

Top file improvements (bytes):
       -1650 : 234576.dasm (-9.19 % of base)
       -1408 : 391615.dasm (-14.04 % of base)
        -615 : 383262.dasm (-8.25 % of base)
        -387 : 235196.dasm (-13.89 % of base)
        -376 : 395811.dasm (-7.87 % of base)
        -344 : 395408.dasm (-3.80 % of base)
        -343 : 501225.dasm (-2.87 % of base)
        -343 : 545942.dasm (-2.87 % of base)
        -343 : 123033.dasm (-2.87 % of base)
        -343 : 453528.dasm (-2.87 % of base)
        -343 : 442710.dasm (-2.87 % of base)
        -343 : 135772.dasm (-2.87 % of base)
        -343 : 285914.dasm (-2.87 % of base)
        -343 : 423104.dasm (-2.87 % of base)
        -339 : 197912.dasm (-2.80 % of base)
        -323 : 217505.dasm (-2.72 % of base)
        -319 : 445640.dasm (-2.68 % of base)
        -319 : 448420.dasm (-2.68 % of base)
        -319 : 183435.dasm (-2.68 % of base)
        -319 : 441741.dasm (-2.68 % of base)

96 total files with Code Size differences (59 improved, 37 regressed), 20 unchanged.

Top method regressions (bytes):
         181 (3.20 % of base) : 27904.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (Tier0-FullOpts)
          99 (1.41 % of base) : 143375.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (Tier0-FullOpts)
          91 (1.31 % of base) : 129771.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (Tier0-FullOpts)
          82 (1.73 % of base) : 76563.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
          82 (0.34 % of base) : 169024.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
          80 (1.88 % of base) : 396102.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (Tier1)
          52 (0.69 % of base) : 116586.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          52 (0.69 % of base) : 177079.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          52 (0.68 % of base) : 280532.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          52 (0.69 % of base) : 112687.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          52 (0.69 % of base) : 225683.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          52 (0.68 % of base) : 65012.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          52 (0.69 % of base) : 119770.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          52 (0.69 % of base) : 220876.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          52 (0.68 % of base) : 381462.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          52 (0.69 % of base) : 432460.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          52 (0.69 % of base) : 631125.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
          25 (1.28 % of base) : 313991.dasm - System.Linq.Parallel.Tests.PlinqModesTests+<WithExecutionModeQueryData>d__3:MoveNext():ubyte:this (Tier0-FullOpts)
          22 (7.24 % of base) : 86260.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (Tier0-FullOpts)
          18 (7.86 % of base) : 365126.dasm - System.Net.SSPISecureChannelType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)

Top method improvements (bytes):
       -1650 (-9.19 % of base) : 234576.dasm - System.Xml.Schema.SchemaNames:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
       -1408 (-14.04 % of base) : 391615.dasm - System.Xml.Xsl.Xslt.KeywordsTable:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
        -615 (-8.25 % of base) : 383262.dasm - System.Xml.Serialization.XmlSerializationReader:InitPrimitiveIDs():this (Instrumented Tier0)
        -387 (-13.89 % of base) : 235196.dasm - System.Xml.Schema.XsdBuilder:SetContainer(int,System.Object):this (Instrumented Tier0)
        -376 (-7.87 % of base) : 395811.dasm - System.Xml.Xsl.XPath.XPathBuilder:Function(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.Xsl.Qil.QilNode]):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
        -344 (-3.80 % of base) : 395408.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
        -343 (-2.87 % of base) : 501225.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -343 (-2.87 % of base) : 545942.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -343 (-2.87 % of base) : 123033.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -343 (-2.87 % of base) : 453528.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -343 (-2.87 % of base) : 442710.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -343 (-2.87 % of base) : 135772.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -343 (-2.87 % of base) : 285914.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -343 (-2.87 % of base) : 423104.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -339 (-2.80 % of base) : 197912.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -323 (-2.72 % of base) : 217505.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -319 (-2.68 % of base) : 445640.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -319 (-2.68 % of base) : 448420.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -319 (-2.68 % of base) : 183435.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -319 (-2.68 % of base) : 441741.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)

Top method regressions (percentages):
          18 (7.86 % of base) : 365126.dasm - System.Net.SSPISecureChannelType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
          22 (7.24 % of base) : 86260.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (Tier0-FullOpts)
          14 (6.33 % of base) : 365211.dasm - System.Net.SSPIAuthType:QueryContextAttributes(System.Net.Security.SafeDeleteContext,int,System.Span`1[ubyte],System.Type,byref):int:this (Tier1)
          15 (6.15 % of base) : 379242.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.__Canon]:Remove(int):ubyte:this (Tier0-FullOpts)
           5 (5.56 % of base) : 242093.dasm - System.Diagnostics.Tests.Helpers+<>c__DisplayClass13_0`1[System.__Canon]:<RetryOnAllPlatformsWithClosingResources>b__0():this (Instrumented Tier0)
          16 (4.86 % of base) : 379194.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier0-FullOpts)
           5 (3.60 % of base) : 42292.dasm - Microsoft.CodeAnalysis.CSharp.AttributeSemanticModel:IsNullableAnalysisEnabled():ubyte:this (Instrumented Tier0)
           5 (3.57 % of base) : 145544.dasm - Microsoft.CodeAnalysis.CSharp.AttributeSemanticModel:IsNullableAnalysisEnabled():ubyte:this (Instrumented Tier0)
           5 (3.57 % of base) : 133115.dasm - Microsoft.CodeAnalysis.CSharp.AttributeSemanticModel:IsNullableAnalysisEnabled():ubyte:this (Instrumented Tier0)
           5 (3.42 % of base) : 284279.dasm - LocalMemoryStream:Clone():LocalMemoryStream:this (Instrumented Tier0)
           5 (3.42 % of base) : 361793.dasm - System.Net.Tests.HttpWebRequestTest:ContentType_SetThenGet_ExpectSameValue(System.Uri):this (Instrumented Tier0)
           5 (3.31 % of base) : 575467.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter:VisitLiteral(Microsoft.CodeAnalysis.CSharp.BoundLiteral):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Instrumented Tier0)
           5 (3.21 % of base) : 361563.dasm - System.Net.Tests.HttpWebRequestTest:Credentials_SetExplicitCredentialsThenGet_ValuesMatch(System.Uri):this (Instrumented Tier0)
         181 (3.20 % of base) : 27904.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (Tier0-FullOpts)
           5 (3.12 % of base) : 557049.dasm - System.Text.Json.Serialization.Tests.ExceptionTests+<>c:<ClassWithUnsupportedArrayInProperty>b__25_1():System.Object:this (Tier0)
           5 (3.11 % of base) : 143412.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:get_IsReadOnly():ubyte:this (Instrumented Tier0)
           5 (3.11 % of base) : 132676.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:get_IsReadOnly():ubyte:this (Instrumented Tier0)
           5 (3.11 % of base) : 38453.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol:get_IsReadOnly():ubyte:this (Instrumented Tier0)
           5 (3.07 % of base) : 235001.dasm - System.Xml.Serialization.CodeGenerator:get_ReturnLocal():System.Reflection.Emit.LocalBuilder:this (Instrumented Tier0)
           5 (3.03 % of base) : 192048.dasm - System.Collections.Frozen.Tests.FrozenDictionary_Generic_Tests_string_string:CreateT(int):System.Collections.Generic.KeyValuePair`2[System.String,System.String]:this (Instrumented Tier0)

Top method improvements (percentages):
         -48 (-23.41 % of base) : 391316.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (Tier0-FullOpts)
         -18 (-22.50 % of base) : 194643.dasm - System.Collections.Immutable.KeysCollectionAccessor`2[int,ubyte]:.ctor(System.Collections.Immutable.IImmutableDictionary`2[int,ubyte]):this (Instrumented Tier0)
         -18 (-22.50 % of base) : 194238.dasm - System.Collections.Immutable.ValuesCollectionAccessor`2[int,ubyte]:.ctor(System.Collections.Immutable.IImmutableDictionary`2[int,ubyte]):this (Instrumented Tier0)
         -18 (-22.50 % of base) : 4217.dasm - Xunit.Sdk.TestCaseMessage:.ctor(Xunit.Abstractions.ITestCase):this (Instrumented Tier0)
         -18 (-21.95 % of base) : 447843.dasm - System.Runtime.Serialization.XmlObjectSerializerWriteContext:IncrementCollectionCount(System.Runtime.Serialization.XmlWriterDelegator,System.Collections.ICollection):this (Instrumented Tier0)
         -18 (-19.15 % of base) : 36878.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ThisParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Instrumented Tier0)
         -18 (-19.15 % of base) : 222233.dasm - System.Configuration.ConfigurationElementCollection:BaseAdd(System.Configuration.ConfigurationElement):this (Instrumented Tier0)
         -18 (-19.15 % of base) : 7408.dasm - Xunit.Sdk.TestClassMessage:.ctor(System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.ITestCase],Xunit.Abstractions.ITestClass):this (Instrumented Tier0)
         -18 (-19.15 % of base) : 4221.dasm - Xunit.Sdk.TestClassMessage:.ctor(Xunit.Abstractions.ITestCase,Xunit.Abstractions.ITestClass):this (Instrumented Tier0)
         -18 (-19.15 % of base) : 7406.dasm - Xunit.Sdk.TestCollectionMessage:.ctor(System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.ITestCase],Xunit.Abstractions.ITestCollection):this (Instrumented Tier0)
         -18 (-19.15 % of base) : 4223.dasm - Xunit.Sdk.TestCollectionMessage:.ctor(Xunit.Abstractions.ITestCase,Xunit.Abstractions.ITestCollection):this (Instrumented Tier0)
         -18 (-19.15 % of base) : 28268.dasm - Xunit.Sdk.TestMethodMessage:.ctor(System.Collections.Generic.IEnumerable`1[Xunit.Abstractions.ITestCase],Xunit.Abstractions.ITestMethod):this (Instrumented Tier0)
         -18 (-19.15 % of base) : 4219.dasm - Xunit.Sdk.TestMethodMessage:.ctor(Xunit.Abstractions.ITestCase,Xunit.Abstractions.ITestMethod):this (Instrumented Tier0)
         -18 (-18.75 % of base) : 391604.dasm - System.Xml.Xsl.XsltOld.NavigatorInput:.ctor(System.Xml.XPath.XPathNavigator):this (Instrumented Tier0)
         -18 (-18.56 % of base) : 447842.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract+CollectionDataContractCriticalHelper+<>c:<IncrementCollectionCount>b__95_1(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext):this (Instrumented Tier0)
         -18 (-18.18 % of base) : 234970.dasm - System.Data.SqlTypes.SqlString:.ctor(System.String):this (Instrumented Tier0)
         -18 (-17.31 % of base) : 32968.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedMethodSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (Instrumented Tier0)
         -18 (-17.14 % of base) : 184282.dasm - System.Collections.Concurrent.BlockingCollection`1[int]:.ctor(System.Collections.Concurrent.IProducerConsumerCollection`1[int]):this (Instrumented Tier0)
        -147 (-16.70 % of base) : 36462.dasm - NuGet.Configuration.SettingsFile+<>c__DisplayClass32_0:<ExecuteSynchronized>b__0():this (Instrumented Tier0)
         -18 (-16.67 % of base) : 35981.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.InstrumentationState):this (Instrumented Tier0)


librariestestsnotieredcompilation.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 102157669 (overridden on cmd)
Total bytes of diff: 102150957 (overridden on cmd)
Total bytes of delta: -6712 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         181 : 14599.dasm (3.20 % of base)
          82 : 59928.dasm (0.34 % of base)
          80 : 175982.dasm (2.11 % of base)
          51 : 177018.dasm (1.40 % of base)
          36 : 204272.dasm (1.12 % of base)
          34 : 110242.dasm (0.72 % of base)
          25 : 140625.dasm (1.28 % of base)
          22 : 26145.dasm (7.24 % of base)
          18 : 11818.dasm (1.58 % of base)
          16 : 169421.dasm (4.86 % of base)
          16 : 287129.dasm (1.34 % of base)
          15 : 203968.dasm (0.84 % of base)
          15 : 169045.dasm (6.15 % of base)
          14 : 19817.dasm (1.48 % of base)
          12 : 105885.dasm (0.46 % of base)
          12 : 105872.dasm (0.59 % of base)
          12 : 203950.dasm (0.56 % of base)
          10 : 169551.dasm (2.92 % of base)
          10 : 227205.dasm (1.66 % of base)
          10 : 169164.dasm (2.92 % of base)

Top file improvements (bytes):
        -239 : 108223.dasm (-3.00 % of base)
        -127 : 137815.dasm (-4.02 % of base)
         -95 : 63618.dasm (-4.94 % of base)
         -94 : 33532.dasm (-7.13 % of base)
         -88 : 93806.dasm (-1.59 % of base)
         -84 : 118595.dasm (-1.18 % of base)
         -70 : 175591.dasm (-1.97 % of base)
         -66 : 153714.dasm (-3.70 % of base)
         -63 : 209578.dasm (-1.50 % of base)
         -59 : 77104.dasm (-3.56 % of base)
         -58 : 162265.dasm (-2.60 % of base)
         -58 : 106902.dasm (-4.32 % of base)
         -57 : 164573.dasm (-3.36 % of base)
         -54 : 245604.dasm (-2.45 % of base)
         -54 : 269934.dasm (-2.45 % of base)
         -50 : 180879.dasm (-5.19 % of base)
         -50 : 221785.dasm (-1.61 % of base)
         -49 : 312724.dasm (-4.09 % of base)
         -48 : 174980.dasm (-23.41 % of base)
         -45 : 2360.dasm (-0.47 % of base)

81 total files with Code Size differences (51 improved, 30 regressed), 20 unchanged.

Top method regressions (bytes):
         181 (3.20 % of base) : 14599.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
          82 (0.34 % of base) : 59928.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
          80 (2.11 % of base) : 175982.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
          51 (1.40 % of base) : 177018.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
          36 (1.12 % of base) : 204272.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadGetOnlyCollection(System.Runtime.Serialization.DataContracts.CollectionDataContract):this (FullOpts)
          34 (0.72 % of base) : 110242.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.dlgateEvent.dlgate.dlgate001.dlgate001.nms.Start:MainMethod():int (FullOpts)
          25 (1.28 % of base) : 140625.dasm - System.Linq.Parallel.Tests.PlinqModesTests+<WithExecutionModeQueryData>d__3:MoveNext():ubyte:this (FullOpts)
          22 (7.24 % of base) : 26145.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
          18 (1.58 % of base) : 11818.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          16 (4.86 % of base) : 169421.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (FullOpts)
          16 (1.34 % of base) : 287129.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2543_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          15 (6.15 % of base) : 169045.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.__Canon]:Remove(int):ubyte:this (FullOpts)
          15 (0.84 % of base) : 203968.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
          14 (1.48 % of base) : 19817.dasm - Microsoft.Interop.Analyzers.CustomMarshallerAttributeFixer+<AddMissingMembers>d__9:MoveNext():this (FullOpts)
          12 (0.56 % of base) : 203950.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:WriteMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder,System.Runtime.Serialization.DataContracts.ClassDataContract):int:this (FullOpts)
          12 (0.59 % of base) : 105872.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,System.Reflection.Emit.LocalBuilder):this (FullOpts)
          12 (0.46 % of base) : 105885.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadValue(System.Type,System.String,System.String):System.Reflection.Emit.LocalBuilder:this (FullOpts)
          10 (1.66 % of base) : 227205.dasm - System.Security.Cryptography.RSABCrypt:TryEncrypt(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.RSAEncryptionPadding,byref):ubyte:this (FullOpts)
          10 (0.21 % of base) : 265123.dasm - System.Text.Json.Serialization.Tests.SerializerTests+<TestMultiContextDeserialization>d__10`1[System.__Canon]:MoveNext():this (FullOpts)
          10 (2.92 % of base) : 169164.dasm - Tests.Collections.IListTest`1[int]:SetItem():this (FullOpts)

Top method improvements (bytes):
        -239 (-3.00 % of base) : 108223.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.covariant.usage001.usage001.Test:MainMethod(System.String[]):int (FullOpts)
        -127 (-4.02 % of base) : 137815.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:MergeSortCooperatively():this (FullOpts)
         -95 (-4.94 % of base) : 63618.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
         -94 (-7.13 % of base) : 33532.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
         -88 (-1.59 % of base) : 93806.dasm - System.Data.RBTree`1[int]:RBInsert(int,int,int,int,ubyte):int:this (FullOpts)
         -84 (-1.18 % of base) : 118595.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.array010.array010.Test:MainMethod():int (FullOpts)
         -70 (-1.97 % of base) : 175591.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadOutput():this (FullOpts)
         -66 (-3.70 % of base) : 153714.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -63 (-1.50 % of base) : 209578.dasm - System.Tests.Int128Tests+<Parse_Valid_TestData>d__13:MoveNext():ubyte:this (FullOpts)
         -59 (-3.56 % of base) : 77104.dasm - System.Collections.Tests.List_Generic_Tests`1[System.__Canon]:FindIndexIntInt_VerifyVanilla(int):this (FullOpts)
         -58 (-4.32 % of base) : 106902.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.operate.regclass.regstrct023.regstrct023.Test:MainMethod():int (FullOpts)
         -58 (-2.60 % of base) : 162265.dasm - System.Threading.Tasks.TaskTimeoutExtensions+<WaitAsync>d__7`1[System.__Canon]:MoveNext():this (FullOpts)
         -57 (-3.36 % of base) : 164573.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],System.String,System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts)
         -54 (-2.45 % of base) : 245604.dasm - System.Text.Json.Serialization.Tests.PropertyVisibilityTests+<NonPublicProperty_JsonInclude_WorksAsExpected>d__276:MoveNext():this (FullOpts)
         -54 (-2.45 % of base) : 269934.dasm - System.Text.Json.Serialization.Tests.PropertyVisibilityTests+<NonPublicProperty_JsonInclude_WorksAsExpected>d__276:MoveNext():this (FullOpts)
         -50 (-1.61 % of base) : 221785.dasm - System.Tests.UInt128Tests+<Parse_Valid_TestData>d__13:MoveNext():ubyte:this (FullOpts)
         -50 (-5.19 % of base) : 180879.dasm - System.Xml.XmlConvertTests.VerifyNameTests1:v1():int:this (FullOpts)
         -49 (-4.09 % of base) : 312724.dasm - System.Threading.Tests.TimerConstructorTests:Timer_AllConstructorsCanBeUsedSuccessfully():this (FullOpts)
         -48 (-23.41 % of base) : 174980.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
         -45 (-0.47 % of base) : 2360.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)

Top method regressions (percentages):
          22 (7.24 % of base) : 26145.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:FindBestSignatureInList(System.Collections.Generic.List`1[Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpFullSig],Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+BinOpArgInfo):int:this (FullOpts)
           8 (6.72 % of base) : 87959.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)
           8 (6.72 % of base) : 87991.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)
          15 (6.15 % of base) : 169045.dasm - System.Collections.ObjectModel.KeyedCollection`2[int,System.__Canon]:Remove(int):ubyte:this (FullOpts)
          16 (4.86 % of base) : 169421.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (FullOpts)
           6 (3.23 % of base) : 15240.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.FormattingHelpers:IsFirstFromKeywordInExpression(Microsoft.CodeAnalysis.SyntaxToken):ubyte (FullOpts)
         181 (3.20 % of base) : 14599.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
          10 (2.92 % of base) : 169164.dasm - Tests.Collections.IListTest`1[int]:SetItem():this (FullOpts)
          10 (2.92 % of base) : 169551.dasm - Tests.Collections.IListTest`1[System.__Canon]:SetItem():this (FullOpts)
           8 (2.29 % of base) : 54720.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
          80 (2.11 % of base) : 175982.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
           4 (1.79 % of base) : 44466.dasm - Microsoft.CodeAnalysis.SyntaxNode:get_HasLeadingTrivia():ubyte:this (FullOpts)
           4 (1.79 % of base) : 50388.dasm - Microsoft.CodeAnalysis.SyntaxNode:get_HasLeadingTrivia():ubyte:this (FullOpts)
           6 (1.73 % of base) : 77433.dasm - System.Collections.Tests.List_Generic_Tests`1[System.__Canon]:Constructor_IEnumerable(int,int,int,int,int):this (FullOpts)
          10 (1.66 % of base) : 227205.dasm - System.Security.Cryptography.RSABCrypt:TryEncrypt(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.RSAEncryptionPadding,byref):ubyte:this (FullOpts)
           4 (1.66 % of base) : 103563.dasm - Microsoft.Diagnostics.Tracing.ETWTraceEventSource:Initialize(System.String,int):this (FullOpts)
          18 (1.58 % of base) : 11818.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          14 (1.48 % of base) : 19817.dasm - Microsoft.Interop.Analyzers.CustomMarshallerAttributeFixer+<AddMissingMembers>d__9:MoveNext():this (FullOpts)
           9 (1.45 % of base) : 132826.dasm - System.IO.Packaging.PartBasedPackageProperties:ValidateXsiType(System.Xml.XmlReader,System.Object,System.String) (FullOpts)
          51 (1.40 % of base) : 177018.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)

Top method improvements (percentages):
         -48 (-23.41 % of base) : 174980.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext+FuncExtension:Invoke(System.Xml.Xsl.XsltContext,System.Object[],System.Xml.XPath.XPathNavigator):System.Object:this (FullOpts)
         -13 (-21.31 % of base) : 70919.dasm - System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
         -13 (-11.02 % of base) : 17145.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__0():System.Object:this (FullOpts)
         -13 (-11.02 % of base) : 153565.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__0():System.Object:this (FullOpts)
         -13 (-10.83 % of base) : 153566.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__1():System.Object:this (FullOpts)
         -13 (-10.83 % of base) : 17146.dasm - System.Net.Http.Unit.Tests.HPack.DynamicTableTest+<>c__DisplayClass6_0:<BoundsCheck_ThrowsIndexOutOfRangeException>b__1():System.Object:this (FullOpts)
          -4 (-10.53 % of base) : 93817.dasm - System.Data.Common.ObjectStorage:Copy(int,int):this (FullOpts)
         -28 (-10.33 % of base) : 230976.dasm - System.Security.Cryptography.X509Certificates.X500DistinguishedName+<EnumerateRelativeDistinguishedNames>d__15:MoveNext():ubyte:this (FullOpts)
         -14 (-10.29 % of base) : 38293.dasm - Moq.ParameterTypes+<GetEnumerator>d__6:MoveNext():ubyte:this (FullOpts)
         -12 (-10.17 % of base) : 1022.dasm - System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -11 (-9.91 % of base) : 34966.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:MapParameters(System.Nullable`1[int][],System.Object[]):this (FullOpts)
         -12 (-9.68 % of base) : 36498.dasm - Stashbox.Utils.Data.ExpandableArray`1+<GetEnumerator>d__20[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -14 (-9.40 % of base) : 68569.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:CopyFromEachQueueToArray(System.__Canon[],int):int:this (FullOpts)
         -15 (-9.32 % of base) : 99609.dasm - System.Data.OleDb.OleDbDataReader:GetValues(System.Object[]):int:this (FullOpts)
         -13 (-9.15 % of base) : 216164.dasm - System.Tests.AttributeGetCustomAttributes:GetCustomAttributesWorksWithOpenAndClosedGenericTypesForParameter() (FullOpts)
         -16 (-8.38 % of base) : 308667.dasm - System.Threading.Tasks.ParallelLoopState:Break[int](int,System.Threading.Tasks.ParallelLoopStateFlags`1[int]) (FullOpts)
         -13 (-8.13 % of base) : 216910.dasm - System.Tests.CreateDelegateTests:CreateDelegate2_Target_GenericTypeParameter() (FullOpts)
         -14 (-7.95 % of base) : 32992.dasm - System.Linq.Enumerable+ReverseIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -8 (-7.84 % of base) : 167468.dasm - System.Numerics.Tests.GenericVectorTests+<>c__DisplayClass714_0`1[int]:<TestSquareRoot>b__0(int,int):this (FullOpts)
          -8 (-7.84 % of base) : 168907.dasm - System.Numerics.Tests.GenericVectorTests+<>c__DisplayClass714_0`1[uint]:<TestSquareRoot>b__0(int,uint):this (FullOpts)


realworld.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11359539 (overridden on cmd)
Total bytes of diff: 11358945 (overridden on cmd)
Total bytes of delta: -594 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         242 : 2392.dasm (3.11 % of base)
         236 : 6451.dasm (0.34 % of base)
         172 : 22760.dasm (2.99 % of base)
          18 : 25504.dasm (1.58 % of base)
          14 : 15732.dasm (0.19 % of base)
           8 : 22231.dasm (2.29 % of base)
           8 : 104.dasm (2.05 % of base)
           5 : 16612.dasm (1.75 % of base)
           4 : 21110.dasm (1.79 % of base)
           4 : 35909.dasm (0.60 % of base)
           3 : 4934.dasm (1.55 % of base)
           3 : 13694.dasm (2.24 % of base)
           1 : 1247.dasm (0.02 % of base)
           1 : 15361.dasm (0.53 % of base)
           1 : 31807.dasm (0.43 % of base)
           1 : 5855.dasm (0.72 % of base)

Top file improvements (bytes):
         -94 : 1653.dasm (-7.13 % of base)
         -82 : 33505.dasm (-1.03 % of base)
         -62 : 33833.dasm (-0.70 % of base)
         -45 : 31796.dasm (-0.47 % of base)
         -37 : 34093.dasm (-0.84 % of base)
         -36 : 15052.dasm (-1.79 % of base)
         -34 : 15464.dasm (-12.55 % of base)
         -34 : 32112.dasm (-2.33 % of base)
         -32 : 15279.dasm (-0.43 % of base)
         -24 : 16939.dasm (-1.77 % of base)
         -24 : 33502.dasm (-2.57 % of base)
         -21 : 9984.dasm (-1.32 % of base)
         -20 : 35684.dasm (-12.50 % of base)
         -20 : 14019.dasm (-5.71 % of base)
         -20 : 7729.dasm (-0.64 % of base)
         -19 : 16410.dasm (-5.64 % of base)
         -18 : 31991.dasm (-4.21 % of base)
         -17 : 8566.dasm (-3.21 % of base)
         -15 : 25790.dasm (-7.81 % of base)
         -15 : 25834.dasm (-6.38 % of base)

54 total files with Code Size differences (38 improved, 16 regressed), 23 unchanged.

Top method regressions (bytes):
         242 (3.11 % of base) : 2392.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
         236 (0.34 % of base) : 6451.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
         172 (2.99 % of base) : 22760.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
          18 (1.58 % of base) : 25504.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          14 (0.19 % of base) : 15732.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainCore(Microsoft.ML.Runtime.IChannel,Microsoft.ML.Data.RoleMappedData,Microsoft.ML.Trainers.LinearModelParameters,int):System.__Canon:this (FullOpts)
           8 (2.29 % of base) : 22231.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
           8 (2.05 % of base) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
           5 (1.75 % of base) : 16612.dasm - Microsoft.ML.Numeric.L1Optimizer+L1OptimizerState:EvalCore(byref,byref,Microsoft.ML.Runtime.IProgressChannelProvider):float:this (FullOpts)
           4 (1.79 % of base) : 21110.dasm - Microsoft.CodeAnalysis.SyntaxNode:get_HasLeadingTrivia():ubyte:this (FullOpts)
           4 (0.60 % of base) : 35909.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModuleForNames(System.Collections.Generic.List`1[System.String],ubyte,ubyte):System.Collections.Generic.IEnumerable`1[System.Management.Automation.PSModuleInfo]:this (FullOpts)
           3 (2.24 % of base) : 13694.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
           3 (1.55 % of base) : 4934.dasm - <StartupCode$FSharp-Core>.$Async+taskCtxt@1645[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
           1 (0.02 % of base) : 1247.dasm - BepuPhysics.CollisionDetection.NarrowPhase`1[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]:AddBatchEntries(int,byref,byref,byref,byref,BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.TypedIndex,int,int,float,byref,byref,byref,byref):this (FullOpts)
           1 (0.72 % of base) : 5855.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadNestedExportedTypes@3183[int,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+ImplementationTag]]:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILNestedExportedType]:this (FullOpts)
           1 (0.53 % of base) : 15361.dasm - Microsoft.ML.Data.TextLoader+Parser:CreateRowSet(Microsoft.ML.Data.TextLoader+ParseStats,int,ubyte[]):Microsoft.ML.Data.TextLoader+RowSet:this (FullOpts)
           1 (0.43 % of base) : 31807.dasm - Microsoft.Win32.RegistryKey:OpenBaseKey(int,int):Microsoft.Win32.RegistryKey (FullOpts)

Top method improvements (bytes):
         -94 (-7.13 % of base) : 1653.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
         -82 (-1.03 % of base) : 33505.dasm - System.Management.Automation.Language.Tokenizer:NextToken():System.Management.Automation.Language.Token:this (FullOpts)
         -62 (-0.70 % of base) : 33833.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -45 (-0.47 % of base) : 31796.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -37 (-0.84 % of base) : 34093.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
         -36 (-1.79 % of base) : 15052.dasm - Microsoft.ML.Transforms.HashingTransformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.IDataView,Microsoft.ML.Transforms.HashingEstimator+ColumnOptions[]):this (FullOpts)
         -34 (-12.55 % of base) : 15464.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+Cursor:.ctor(Microsoft.ML.Runtime.IChannelProvider,Microsoft.ML.DataViewSchema,int[],int[],Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[],System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch],System.Action):this (FullOpts)
         -34 (-2.33 % of base) : 32112.dasm - System.Management.Automation.ArgumentTypeConverterAttribute:Transform(System.Management.Automation.EngineIntrinsics,System.Object,ubyte,ubyte):System.Object:this (FullOpts)
         -32 (-0.43 % of base) : 15279.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
         -24 (-2.57 % of base) : 33502.dasm - System.Management.Automation.Language.Tokenizer:SkipNewlines(ubyte):this (FullOpts)
         -24 (-1.77 % of base) : 16939.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (FullOpts)
         -21 (-1.32 % of base) : 9984.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking+FixupExprNode@1147:Invoke(Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.TypedTree+Expr):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr]:this (FullOpts)
         -20 (-0.64 % of base) : 7729.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores:GetStructuralElementsOfTyconDefn(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase1DataForTycon,FSharp.Compiler.TypedTree+Entity):Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]] (FullOpts)
         -20 (-5.71 % of base) : 14019.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
         -20 (-12.50 % of base) : 35684.dasm - System.Management.Automation.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
         -19 (-5.64 % of base) : 16410.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+DataView+Cursor:GetGetter[double](Microsoft.ML.DataViewSchema+Column):Microsoft.ML.ValueGetter`1[double]:this (FullOpts)
         -18 (-4.21 % of base) : 31991.dasm - System.Security.AccessControl.CommonAcl:QuickSort(int,int,ubyte):this (FullOpts)
         -17 (-3.21 % of base) : 8566.dasm - FSharp.Compiler.TypedTreeOps:eliminateDeadTargetsFromMatch[System.__Canon](FSharp.Compiler.TypedTree+DecisionTree,System.__Canon[]):System.Tuple`2[System.__Canon,System.__Canon] (FullOpts)
         -15 (-6.38 % of base) : 25834.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DependsDirectlyOn(int,int):ubyte:this (FullOpts)
         -15 (-7.81 % of base) : 25790.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:InitializeDependencies():this (FullOpts)

Top method regressions (percentages):
         242 (3.11 % of base) : 2392.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
         172 (2.99 % of base) : 22760.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
           8 (2.29 % of base) : 22231.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ResolveMultipleSymbolsInAttributeTypeLookup(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
           3 (2.24 % of base) : 13694.dasm - <StartupCode$FSharp-Core>.$Async+Parallel@1621-3[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
           8 (2.05 % of base) : 104.dasm - System.StartupHookProvider:ProcessStartupHooks(System.String) (FullOpts)
           4 (1.79 % of base) : 21110.dasm - Microsoft.CodeAnalysis.SyntaxNode:get_HasLeadingTrivia():ubyte:this (FullOpts)
           5 (1.75 % of base) : 16612.dasm - Microsoft.ML.Numeric.L1Optimizer+L1OptimizerState:EvalCore(byref,byref,Microsoft.ML.Runtime.IProgressChannelProvider):float:this (FullOpts)
          18 (1.58 % of base) : 25504.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
           3 (1.55 % of base) : 4934.dasm - <StartupCode$FSharp-Core>.$Async+taskCtxt@1645[System.__Canon]:Invoke(System.__Canon):Microsoft.FSharp.Control.AsyncReturn:this (FullOpts)
           1 (0.72 % of base) : 5855.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader+seekReadNestedExportedTypes@3183[int,FSharp.Compiler.AbstractIL.ILBinaryReader+TaggedIndex`1[FSharp.Compiler.AbstractIL.BinaryConstants+ImplementationTag]]:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILNestedExportedType]:this (FullOpts)
           4 (0.60 % of base) : 35909.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModuleForNames(System.Collections.Generic.List`1[System.String],ubyte,ubyte):System.Collections.Generic.IEnumerable`1[System.Management.Automation.PSModuleInfo]:this (FullOpts)
           1 (0.53 % of base) : 15361.dasm - Microsoft.ML.Data.TextLoader+Parser:CreateRowSet(Microsoft.ML.Data.TextLoader+ParseStats,int,ubyte[]):Microsoft.ML.Data.TextLoader+RowSet:this (FullOpts)
           1 (0.43 % of base) : 31807.dasm - Microsoft.Win32.RegistryKey:OpenBaseKey(int,int):Microsoft.Win32.RegistryKey (FullOpts)
         236 (0.34 % of base) : 6451.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
          14 (0.19 % of base) : 15732.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainCore(Microsoft.ML.Runtime.IChannel,Microsoft.ML.Data.RoleMappedData,Microsoft.ML.Trainers.LinearModelParameters,int):System.__Canon:this (FullOpts)
           1 (0.02 % of base) : 1247.dasm - BepuPhysics.CollisionDetection.NarrowPhase`1[DemoBenchmarks.RagdollTubeBenchmark+SubgroupFilteredCallbacks]:AddBatchEntries(int,byref,byref,byref,byref,BepuPhysics.Collidables.TypedIndex,BepuPhysics.Collidables.TypedIndex,int,int,float,byref,byref,byref,byref):this (FullOpts)

Top method improvements (percentages):
          -8 (-14.04 % of base) : 2276.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
         -34 (-12.55 % of base) : 15464.dasm - Microsoft.ML.Data.DataViewUtils+Splitter+Cursor:.ctor(Microsoft.ML.Runtime.IChannelProvider,Microsoft.ML.DataViewSchema,int[],int[],Microsoft.ML.Data.DataViewUtils+Splitter+OutPipe[],System.Collections.Concurrent.BlockingCollection`1[Microsoft.ML.Data.DataViewUtils+Splitter+Batch],System.Action):this (FullOpts)
         -20 (-12.50 % of base) : 35684.dasm - System.Management.Automation.ComInterop.ComInvokeBinder:MakeArgumentExpressions():System.Linq.Expressions.Expression[]:this (FullOpts)
         -13 (-12.38 % of base) : 16234.dasm - Microsoft.ML.Internal.Utilities.HashArray`1[float]:.ctor():this (FullOpts)
          -6 (-11.32 % of base) : 15844.dasm - Microsoft.ML.Transforms.RowShufflingTransformer+Cursor+<>c__DisplayClass36_0`1[ubyte]:<CreateGetterDelegate>b__0(byref):this (FullOpts)
          -9 (-9.89 % of base) : 3188.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          -4 (-9.52 % of base) : 15430.dasm - Microsoft.ML.Data.TextLoader+PrimitivePipe`1[System.ReadOnlyMemory`1[ushort]]:Consume(int,int,byref):ubyte:this (FullOpts)
         -14 (-7.95 % of base) : 34770.dasm - System.Linq.Enumerable+ReverseIterator`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
         -15 (-7.81 % of base) : 25790.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:InitializeDependencies():this (FullOpts)
         -12 (-7.64 % of base) : 34410.dasm - System.Management.Automation.Language.Tokenizer:NewVariableToken(System.Management.Automation.VariablePath,ubyte):System.Management.Automation.Language.VariableToken:this (FullOpts)
          -7 (-7.45 % of base) : 13867.dasm - System.IO.Compression.DeflateStream:ReadByte():int:this (FullOpts)
         -94 (-7.13 % of base) : 1653.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
          -2 (-6.67 % of base) : 19960.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxList+WithManyChildren:GetNodeSlot(int):Microsoft.CodeAnalysis.SyntaxNode:this (FullOpts)
         -12 (-6.59 % of base) : 33506.dasm - System.Management.Automation.Language.Tokenizer:ScanStringLiteral():System.Management.Automation.Language.Token:this (FullOpts)
         -15 (-6.38 % of base) : 25834.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DependsDirectlyOn(int,int):ubyte:this (FullOpts)
         -12 (-6.22 % of base) : 18559.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddTokenSlot():this (FullOpts)
         -12 (-6.19 % of base) : 12702.dasm - FSharp.Compiler.TypedTreeOps:permute[System.__Canon](int[],System.__Canon[]):System.__Canon[] (FullOpts)
         -20 (-5.71 % of base) : 14019.dasm - System.Collections.Concurrent.ConcurrentBag`1[System.__Canon]:ToArray():System.__Canon[]:this (FullOpts)
         -19 (-5.64 % of base) : 16410.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+DataView+Cursor:GetGetter[double](Microsoft.ML.DataViewSchema+Column):Microsoft.ML.ValueGetter`1[double]:this (FullOpts)
          -2 (-5.26 % of base) : 16413.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+Column`2[double,double]:CopyOut(int,byref):this (FullOpts)